Klauzula HAVING - THE DATA SCIENCE LIBRARY https://sigmaquality.pl/tag/klauzula-having/ Wojciech Moszczyński Sun, 06 Oct 2024 09:28:57 +0000 pl-PL hourly 1 https://wordpress.org/?v=6.8.3 https://sigmaquality.pl/wp-content/uploads/2019/02/cropped-ryba-32x32.png Klauzula HAVING - THE DATA SCIENCE LIBRARY https://sigmaquality.pl/tag/klauzula-having/ 32 32 26_SQL. Klauzula HAVING https://sigmaquality.pl/mysql-kurs-podstawowy/26_sql-klauzula-sql-having/ Sun, 24 May 2015 07:12:00 +0000 http://sigmaquality.pl/?p=1880 Klauzula HAVING dodatkowo doprecyzowuje wynik wyszukiwania klauzuli GROUP BY.  SELECT LOCATIONS.CITY, ROUND(AVG(EMPLOYEES.SALARY)) AS Średnie_wynagrodzenie, COUNT(EMPLOYEES.SALARY) AS Liczba_pracowników FROM DEPARTMENTS, LOCATIONS, EMPLOYEES  WHERE DEPARTMENTS.LOCATION_ID = LOCATIONS.LOCATION_ID [...]

Artykuł 26_SQL. Klauzula HAVING pochodzi z serwisu THE DATA SCIENCE LIBRARY.

]]>

Klauzula HAVING dodatkowo doprecyzowuje wynik wyszukiwania klauzuli GROUP BY. 

SELECT

LOCATIONS.CITY,

ROUND(AVG(EMPLOYEES.SALARY)) AS Średnie_wynagrodzenie,

COUNT(EMPLOYEES.SALARY) AS Liczba_pracowników

FROM DEPARTMENTS, LOCATIONS, EMPLOYEES 

WHERE DEPARTMENTS.LOCATION_ID = LOCATIONS.LOCATION_ID AND EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID

GROUP BY LOCATIONS.CITY

HAVING ROUND(AVG(EMPLOYEES.SALARY)) > 6000;

Otrzymujemy tabelę wynikową:

Teraz sprawdźmy, który dział miał sumę wynagrodzeń niższą niż 5000.

SELECT

JOBS.JOB_ID,

JOBS.JOB_TITLE,

SUM(SALARY)

FROM EMPLOYEES,JOBS

WHERE jobs.job_id = EMPLOYEES.JOB_ID

GROUP BY JOBS.JOB_TITLE,JOBS.JOB_ID

HAVING MIN(salary) < 5000;

Otrzymujemy tabelę wynikową:

Teraz chcielibyśmy wiedzieć ile zarobił Wiceprezes ds. administracyjnych.

SELECT

JOBS.JOB_ID,

JOBS.JOB_TITLE,

SUM(SALARY)

FROM EMPLOYEES,JOBS

WHERE jobs.job_id = EMPLOYEES.JOB_ID

GROUP BY JOBS.JOB_TITLE,JOBS.JOB_ID

HAVING JOBS.JOB_ID = 'AD_VP';

Otrzymujemy tabelę wynikową:

 Klauzula HAVING służy do doprecyzowywania klauzul WHERE  i GROUP BY niejako „na szybko”. 

W powyższym zapytaniu klauzula HAVING może być pominięta.

SELECT

JOBS.JOB_ID,

JOBS.JOB_TITLE,

SUM(SALARY)

FROM EMPLOYEES,JOBS

WHERE jobs.job_id = EMPLOYEES.JOB_ID AND JOBS.JOB_ID = 'AD_VP'

GROUP BY JOBS.JOB_TITLE,JOBS.JOB_ID;

Artykuł 26_SQL. Klauzula HAVING pochodzi z serwisu THE DATA SCIENCE LIBRARY.

]]>