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.
Görev
KolayKullanılabilir tablolar ve sütunlar:
orders:id,customer_id,status
Her customer_id için şunları döndürün:
customer_idtotal: 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
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
2String Fonksiyonları
LENGTH, UPPER, LOWERSUBSTRINSTRREPLACE ve TRIM|| ile BirleştirmeÖzet - FaturalarKendi başına pratik yap: SQL playground