Menu
Coddy logo textTech

CASE ile COUNT

Coddy'nin SQL Journey'sinin Temellerin Ötesi bölümünün bir parçası. Ders 12 / 27.

Bir CASE ifadesini bir toplama işlevinin içine yerleştirebilirsiniz. İşin püf noktası, COUNT işlevinin NULL değerlerini yok saymasıdır; bu nedenle ELSE içermeyen bir CASE, yalnızca koşulla eşleşen satırları sayar.

SELECT
    COUNT(*) AS total,
    COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count
FROM users

Şimdi active_count, tüm sorguyu filtrelememiş olmamıza rağmen 'active' satırlarının sayısıdır. Bu, yazacağınız her çok metrikli gösterge tablosu sorgusunun ardındaki püf noktasıdır.

challenge icon

Görev

Kolay

Kullanılabilir tablolar ve sütunlar:

  • orders: id, customer_id, status

Her customer_id için şunları döndürün:

  • customer_id
  • total: bu müşterinin verdiği toplam sipariş sayısı
  • shipped: status = 'shipped' olanların sayısı
  • cancelled: status = 'cancelled' olanların sayısı

Yalnızca en az bir iptal edilmiş siparişi olan müşterileri döndürün. customer_id'ye göre sıralayın.

Kendin dene

SELECT customer_id,
       COUNT(*) AS total,
       -- gönderilen, iptal edilen COUNT(CASE ...) kullanarak
FROM orders
GROUP BY customer_id
-- en az bir iptali olan müşterilere filtrele
ORDER BY customer_id
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temellerin Ötesi bölümündeki tüm dersler

Kendi başına pratik yap: SQL playground