Menu
Coddy logo textTech

COUNT z CASE

Część sekcji Poza podstawami ścieżki SQL w Coddy. Lekcja 12 z 27.

Możesz umieścić wyrażenie CASE wewnątrz funkcji agregującej. Sztuczka polega na tym, że COUNT ignoruje NULL, więc wyrażenie CASE bez ELSE zlicza tylko wiersze spełniające warunek.

SELECT
    COUNT(*) AS total,
    COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count
FROM users

Teraz active_count to liczba wierszy 'active', mimo że nie filtrowaliśmy całego zapytania. To właśnie ta sztuczka kryje się za każdym zapytaniem do dashboardu wielu metryk, które kiedykolwiek napiszesz.

challenge icon

Wyzwanie

Łatwy

Dostępne tabele i kolumny:

  • orders: id, customer_id, status

Dla każdego customer_id zwróć:

  • customer_id
  • total: łączną liczbę zamówień złożonych przez tego klienta
  • shipped: liczbę, dla której status = 'shipped'
  • cancelled: liczbę, dla której status = 'cancelled'

Zwróć tylko klientów, którzy mają co najmniej jedno anulowane zamówienie. Posortuj według customer_id.

Spróbuj swoich sił

SELECT customer_id,
       COUNT(*) AS total,
       -- wysłane, anulowane przy użyciu COUNT(CASE ...)
FROM orders
GROUP BY customer_id
-- ogranicz wyniki do klientów z co najmniej jednym anulowanym zamówieniem
ORDER BY customer_id
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