SQL HAVING
SQL HAVING 절
HAVING 절
SQL에 HAVING 절을 추가하는 이유는 WHERE 키워드를 사용할 수 없기 때문입니다. 집계 함수와 함께 사용됩니다.
HAVING 절을 사용하면 그룹화 후 각 데이터 그룹을 필터링할 수 있습니다.
SQL HAVING 구문
SELECT 열_이름, 집계_함수(열_이름)
FROM 테이블_이름
WHERE 열_이름 연산자 값
GROUP BY 열_이름
HAVING 집계_함수(열_이름) ) 연산자 값;
FROM 테이블_이름
WHERE 열_이름 연산자 값
GROUP BY 열_이름
HAVING 집계_함수(열_이름) ) 연산자 값;
데모 데이터베이스
이 튜토리얼에서는 PHP 샘플 데이터베이스를 사용합니다.
다음은 "Websites" 테이블에서 선택된 데이터입니다:
+----+---------------+-- - ------------+-------+---------+
| 이름 | URL | 1 | 미국 |
| 2 | 타오바오 |
| 3 | CN |
| 4 | 웨이보 |
| 페이스북 | 7 | 스택오버플로우 | http://stackoverflow.com/ | 0 |
+----+-------------- -- -----+------+---------+
이제 우리는 총 방문수 200개 이상의 웹사이트.
| 이름 | 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 인스턴스
+------+------ --- +-------+------------+
| 지원 사이트_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 인스턴스
다음 SQL 문을 사용합니다:
예SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_logINNER JOIN 웹사이트
예SELECT Websites.name, SUM(access_log.count) AS nums FROM
웹사이트ON access_log.site_id=Websites.id)
GROUP BY Websites.nameHAVING
SUM(access_log.count) > 200;
위 SQL을 실행한 결과는 다음과 같습니다.
위 SQL을 실행한 결과는 다음과 같습니다.
이제 총 방문 수가 200보다 큰 웹 사이트를 찾고 Alexa 순위가 200보다 작은 것을 찾으십시오.
SQL 문에 공통 WHERE 절을 추가합니다: INNER JOIN access_log
ON Websites.id=access_log.site_id
WHERE Websites.alexa < 200GROUP BY Websites.name
HAVING SUM(access_log.count) >200;
HAVING SUM(access_log.count) >200;
위 SQL을 실행하여 출력된 결과는 다음과 같습니다.