Menu
Coddy logo textTech

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 users

SUM(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ół.

challenge icon

Wyzwanie

Łatwy

Dostępne tabele i kolumny:

  • transactions: id, category, type, amount

type to albo 'sale', albo 'refund'. Dla każdej wartości category zwróć:

  • category
  • net_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
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Poza podstawami

Poćwicz samodzielnie: Edytor online SQL