SUM z CASE
Część sekcji Poza podstawami ścieżki SQL w Coddy. Lekcja 13 z 27.
Ten sam pomysł działa z SUM: a jest jeszcze bardziej elastyczny. CASE może zwracać 1 dla pasujących wierszy i 0 dla wszystkich pozostałych albo dowolną wartość liczbową, aby różnie ważyć wiersze.
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) i COUNT(CASE … THEN 1 END) dają ten sam wynik przy zliczaniu; wybierz styl preferowany przez Twój zespół.
Wyzwanie
ŁatwyDostępne tabele i kolumny:
transactions:id,category,type,amount
type to albo 'sale', albo 'refund'. Dla każdej wartości category zwróć:
categorynet_revenue: suma kwot sprzedaży minus suma kwot zwrotów
Oblicz net_revenue w pojedynczym wyrażeniu SUM(CASE …), w którym kwota zwrotów jest uwzględniana jako liczba ujemna. Sortuj według net_revenue malejąco.
Spróbuj swoich sił
SELECT category,
-- jedno SUM(CASE ...), w którym zwroty są liczone jako wartości ujemne
FROM transactions
GROUP BY category
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Poza podstawami
3Agregacja warunkowa
COUNT z CASESUM z CASEPrzekształcanie wierszy w kolumnyPodsumowanie — źródła ruchuPoćwicz samodzielnie: Edytor online SQL