Zadanie 33.
SELECT department_id, COUNT(*) AS liczba_pracownikow
FROM employees
GROUP BY department_id
ORDER BY department_id;
Zadanie 34.
SELECT job_id, AVG(salary) AS srednia_placa
FROM employees
GROUP BY job_id;
Zadanie 35.
SELECT department_id,
MIN(salary) AS min_placa,
MAX(salary) AS max_placa
FROM employees
GROUP BY department_id;
Zadanie 36.
SELECT department_id, AVG(salary) AS srednia
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 8000;
Zadanie 37.
SELECT department_id, COUNT(*) AS liczba
FROM employees
WHERE department_id IN (50, 60, 80)
GROUP BY department_id;
Zadanie 38.
SELECT manager_id,
SUM(salary) AS suma_wynagrodzen,
COUNT(*) AS liczba_podwladnych
FROM employees
WHERE manager_id IS NOT NULL
GROUP BY manager_id
ORDER BY suma_wynagrodzen DESC;
📝 Omówienie
GROUP BY agreguje wiersze według wskazanych kolumn. Funkcje agregujące: COUNT, SUM, AVG, MIN, MAX. WHERE filtruje wiersze PRZED grupowaniem, a HAVING filtruje wyniki PO grupowaniu – to kluczowa różnica. W klauzuli SELECT mogą pojawić się tylko kolumny z GROUP BY lub opakowane w funkcję agregującą.
