SQL 시작하기 튜토리얼 매...login
SQL 시작하기 튜토리얼 매뉴얼
작가:php.cn  업데이트 시간:2022-04-12 14:15:40

SQL HAVING


SQL HAVING


HAVING 절

SQL에 HAVING 절을 추가하는 이유는 WHERE 키워드를 사용할 수 없기 때문입니다. 집계 함수와 함께 사용됩니다.

HAVING 절을 사용하면 그룹화 후 각 데이터 그룹을 필터링할 수 있습니다.

SQL HAVING 구문

SELECT 열_이름, 집계_함수(열_이름)
FROM 테이블_이름
WHERE 열_이름 연산자 값
GROUP BY 열_이름
HAVING 집계_함수(열_이름) ) 연산자 값;


데모 데이터베이스

이 튜토리얼에서는 PHP 샘플 데이터베이스를 사용합니다.

다음은 "Websites" 테이블에서 선택된 데이터입니다:

+----+---------------+-- - ------------+-------+---------+
| 이름 | URL                                                          | 1 | 미국 |
| 2 | 타오바오 |
| 3 | CN |
| 4 | 웨이보 |
| 페이스북 | 7 | 스택오버플로우 | http://stackoverflow.com/ | 0 |
+----+-------------- -- -----+------+---------+

다음은 'access_log' 웹사이트 접속 기록 테이블의 데이터이다:

mysql> SELECT * FROM access_log;
+------+------ --- +-------+------------+
| 지원 사이트_ID 개수 |
+------+--- --- ---+-------+------------+
| 1 | 2016-05-10 |
| 3 | 2016-05-13 |
| 2016-05-14 | 5 | 2016년 5월 14일 |
| 2016년 5월 15일 | 220 | -05 -16 |
| 9 | 3 | 2016-05-17 |
+------+------+- -- ---------+
세트의 9개 행(0.00초)



SQL HAVING 인스턴스
이제 우리는 총 방문수 200개 이상의 웹사이트.

다음 SQL 문을 사용합니다:

SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
INNER JOIN 웹사이트

ON access_log.site_id=Websites.id)

GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;

위 SQL을 실행한 결과는 다음과 같습니다.

이제 총 방문 수가 200보다 큰 웹 사이트를 찾고 Alexa 순위가 200보다 작은 것을 찾으십시오.
SQL 문에 공통 WHERE 절을 추가합니다:

SELECT Websites.name, SUM(access_log.count) AS nums FROM 웹사이트
INNER JOIN access_log

ON Websites.id=access_log.site_id

WHERE Websites.alexa < 200
GROUP BY Websites.name
HAVING SUM(access_log.count) >200;

위 SQL을 실행하여 출력된 결과는 다음과 같습니다.