Sobes.tech
Middle

Jak napisać zapytanie SQL do zliczania liczby pracowników w kategoriach wynagrodzeń z wyświetleniem 0 dla pustych kategorii?

sobes.tech AI

Odpowiedź od AI

Aby policzyć liczbę pracowników w każdej kategorii wynagrodzeń i wyświetlić 0 dla kategorii bez pracowników, należy użyć LEFT JOIN z tabelą kategorii wynagrodzeń.

Załóżmy, że istnieją dwie tabele:

  • salary_categories (id, nazwa_kategorii)
  • employees (id, imię, salary_category_id)

Przykład zapytania:

SELECT sc.nazwa_kategorii, COUNT(e.id) AS liczba_pracowników
FROM salary_categories sc
LEFT JOIN employees e ON e.salary_category_id = sc.id
GROUP BY sc.nazwa_kategorii
ORDER BY sc.nazwa_kategorii;

Wyjaśnienie:

  • LEFT JOIN gwarantuje, że wszystkie kategorie z salary_categories będą w wyniku, nawet jeśli nie ma w nich pracowników.
  • COUNT(e.id) liczy liczbę pracowników w każdej kategorii; dla pustych kategorii wynik będzie 0.

Taki sposób pozwala uzyskać pełną listę kategorii z poprawnym liczeniem pracowników.