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: ve hatta daha esnektir. CASE, eşleşen satırlar için 1 ve 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) sayma işlemi için aynı sonucu verir; ekibinizin tercih ettiği stili seçin.
Görev
KolayMevcut tablolar ve sütunlar:
<strong>transactions</strong>:<strong>id</strong>,<strong>category</strong>,<strong>type</strong>,<strong>amount</strong>
type değeri ya 'sale' ya da 'refund' şeklindedir. Her bir category için şunları döndürün:
categorynet_revenue: satış tutarlarının toplamı eksi iade tutarlarının toplamı
net_revenue değerini, iadelerin tutarlarını negatif bir sayı olarak kattığı tek bir SUM(CASE …) ifadesiyle hesaplayın. net_revenue değerine göre azalan düzende sıralayın.
Kopya kağıdı
Değerleri koşullu olarak toplamak için CASE ile SUM kullanın — sayma için 1/0 veya ağırlıklı toplamlar için gerçek değerleri döndürün:
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) aynı sayım sonucunu üretir.
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 - Faturalar