Przejdź do treści
Wróć do kursuDane i QA / Lekcja 9 z 10

Lekcja 9 / raportowanie

Raporty: COUNT, GROUP BY, HAVING i CASE WHEN

Przejdziesz od listy rekordów do prostego raportu. To moment, w którym SQL zaczyna odpowiadać nie tylko „które rekordy?”, ale też „ile ich jest i które grupy wymagają uwagi?”.

Sytuacja z pracy

Product manager pyta: „Ile zgłoszeń mamy w każdym statusie i które statusy wymagają szybkiej uwagi?”. Nie chcesz wysyłać surowej listy zgłoszeń. Chcesz przygotować mały raport.

Dane startowe

idstatusseverity
1openhigh
2openmedium
3closedlow
4in_reviewhigh

Nowe pojęcia

COUNT(*)
Liczy rekordy w grupie.
GROUP BY
Zbiera rekordy według wspólnej wartości, np. statusu.
HAVING
Filtruje grupy po policzeniu.
CASE WHEN
Dodaje własną etykietę na podstawie warunku.

Zapytanie SQL

SELECT
  status,
  COUNT(*) AS reports_count,
  CASE
    WHEN COUNT(*) >= 2 THEN 'high attention'
    ELSE 'normal'
  END AS risk_label
FROM bug_reports
GROUP BY status;

Wynik

statusreports_countrisk_label
open2high attention
closed1normal
in_review1normal

HAVING na małym przykładzie

Jeśli chcesz pokazać tylko grupy z co najmniej dwoma zgłoszeniami, używasz HAVING.

SELECT status, COUNT(*) AS reports_count
FROM bug_reports
GROUP BY status
HAVING COUNT(*) >= 2;

Co to znaczy dla QA?

Raport nie zastępuje analizy pojedynczych rekordów, ale pomaga ustalić priorytet. Jeśli status open ma najwięcej zgłoszeń, możesz zacząć od niego i dopiero potem wejść w szczegóły.

Mini-zadanie

Napisz zapytanie, które liczy zgłoszenia po statusie bez CASE WHEN.

Ćwiczenie praktyczne

Dodaj etykietę high attention, jeśli liczba zgłoszeń dla statusu jest większa lub równa 2. Potem napisz jedno zdanie, co taka etykieta daje osobie nietechnicznej.

Quiz

Co robi COUNT(*)?

Liczy rekordy.

Po co jest GROUP BY?

Żeby policzyć rekordy osobno dla każdej grupy, np. każdego statusu.

Czym różni się WHERE od HAVING?

WHERE filtruje rekordy przed grupowaniem, HAVING filtruje grupy po policzeniu.

Po co CASE WHEN?

Żeby dodać własną etykietę lub kategorię na podstawie warunku.

Co dalej?

Masz już wszystkie klocki: czytanie danych, filtrowanie, NULL, sortowanie, JOIN-y i raporty. W finale połączysz je w mały audyt checkoutu.

Lekcja 9: Raporty: COUNT, GROUP BY, HAVING i CASE WHEN | SQL od podstaw dla QA | Mikołaj Mikołajczak