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 usersTeraz 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.
Wyzwanie
ŁatwyDostępne tabele i kolumny:
orders:id,customer_id,status
Dla każdego customer_id zwróć:
customer_idtotal: łączną liczbę zamówień złożonych przez tego klientashipped: liczbę, dla którejstatus = 'shipped'cancelled: liczbę, dla którejstatus = '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
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