CASE ile SUM
Coddy'nin SQL Journey'sinin Temellerin Ötesi bölümünün bir parçası. Ders 13 / 27.
Aynı fikir SUM ile de çalışır: üstelik çok daha esnektir. CASE, eşleşen satırlar için 1, diğer her şey için 0 döndürebilir veya satırları farklı şekilde ağırlıklandırmak için herhangi bir sayısal değer döndürebilir.
SELECT
SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) AS active_count,
SUM(CASE WHEN plan = 'pro' THEN amount ELSE 0 END) AS pro_revenue
FROM usersSUM(CASE … THEN 1 ELSE 0 END) ve COUNT(CASE … THEN 1 END) sayım için aynı sonucu verir; ekibinizin tercih ettiği stili seçin.
Görev
KolayKullanılabilir tablolar ve sütunlar:
transactions:id,category,type,amount
type, 'sale' veya 'refund' değerlerinden biridir. Her category için şunları döndürün:
categorynet_revenue: satış tutarları toplamı eksi iade tutarları toplamı
net_revenue değerini, iadelerin tutarlarının negatif sayı olarak katkıda bulunduğu tek bir SUM(CASE …) ifadesiyle hesaplayın. net_revenue değerine göre azalan sırada sıralayın.
Kendin dene
SELECT category,
-- iadelerin negatif sayıldığı bir SUM(CASE ...)
FROM transactions
GROUP BY category
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