일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 티스토리챌린지
- 프로그래머스
- 스프링
- Eclipse
- CSS
- 스프링퀵스타트
- 웹개발
- Spring
- 쿠킹덤
- 홀리데이익스프레스
- 자바
- GIT
- MySQL
- Java
- edwith
- HTML
- dart
- programmers
- 쿠키런킹덤
- 쿠키런킹덤공략
- 쿠킹덤공략
- 오블완
- oracle
- SQL
- 이클립스
- 프로그래밍
- 쿠키런킹덤크리스마스
- 딥러닝
- 크리스마스
- 개발자
- Today
- Total
Dev study and notes
SQL SQLite 집계함수 Having 그룹 데이터베이스 DATABASE 데이터관리 본문
*국문
Having
GROUP BY를 사용하여 데이터를 그룹화할 수 있을 뿐만 아니라 SQL에서는 어떤 그룹을 포함하고 어떤 그룹을 제외할지 필터링할 수 있습니다.
예를 들어, 서로 다른 장르의 영화가 각 연도마다 얼마나 많이 제작되었는지 알고 싶지만, 최소 10편 이상의 영화가 있는 연도와 장르만 관심이 있습니다.
여기서는 WHERE를 사용할 수 없습니다. 왜냐하면 행을 필터링하는 것이 아니라 그룹을 필터링하고 싶기 때문입니다.
이것이 HAVING이 필요한 이유입니다.
HAVING.은 WHERE.과 매우 유사합니다. 사실, 지금까지 배운 모든 유형의 WHERE 절을 HAVING과 함께 사용할 수 있습니다.
다음과 같이 문제를 해결할 수 있습니다:
SELECT year,
genre,
COUNT(name)
FROM movies
GROUP BY 1, 2
HAVING COUNT(name) > 10;
쿼리 결과를 개별 행의 값에 따라 제한하려면 WHERE.을 사용합니다.
쿼리 결과를 집계 속성에 따라 제한하려면 HAVING을 사용합니다.
HAVING 문은 항상 GROUP BY 뒤에 오지만 ORDER BY 및 LIMIT. 앞에 와야 합니다.
다음과 같은 쿼리가 있다고 가정해 봅시다:
SELECT price,
ROUND(AVG(downloads)),
COUNT(*)
FROM fake_apps
GROUP BY price;
이는 각 가격대에서 평균 다운로드(반올림)와 앱의 수를 반환합니다.
그러나 특정 가격대에는 많은 앱이 없으므로 해당 가격대의 평균 다운로드는 의미가 적습니다.
HAVING 절을 추가하여 10개 이상의 앱이 있는 가격대로 쿼리를 제한합니다.
각 가격대에서의 총 앱 수는 COUNT(*)에 의해 주어집니다.
SELECT price,
ROUND(AVG(downloads)),
COUNT(*)
FROM fake_apps
GROUP BY price
HAVING COUNT(*) > 10;
COUNT(*) > 10이 조건입니다.
이 조건에는 집계 함수가 포함되어 있으므로 WHERE. 대신 HAVING을 사용해야 합니다.
끝!
'studyLog' 카테고리의 다른 글
인텔리제이 폴더 보기 또는 패키지 보기 설정 intellij folder view setting (1) | 2024.06.19 |
---|---|
SQL SQLite 내부 조인 Inner Join 데이터베이스 (0) | 2024.06.19 |
맥 인텔리제이 코드 자동정렬 단축키 포맷팅 mac intellij fomatting (0) | 2024.06.18 |
SQL SQLite 제약조건 Constraints 데이터베이스 DATABASE (0) | 2024.06.16 |
SQL SQLite 중복제거 Distinct 데이터베이스 DATABASE 데이터관리 (0) | 2024.06.16 |