상세 컨텐츠

본문 제목

집계함수, GROUP BY, HAVING

SQL/MySQL 이론

by 관재탑 2022. 7. 26. 11:38

본문

1. 집계함수

COUNT는 전제 행의 개수를 세줍니다.

SELECT COUNT(*)
FROM tips

 

COUNT(DISTINCT 칼럼명)를 써주면 해당 칼럼에서 중복되는 행은 빼주고 유니크한 행의 개수를 세줍니다.

SELECT COUNT(DISTINCT day)
FROM tips

 

COUNT는 NULL값은 제외하게 개수를 세줍니다.

 

SUM, AVG, MIN, MAX가 있다.

 

 

2. GROUP BY

GROUP BY는 그룹별로 요약해줍니다. 주로 집계함수와 같이 사용합니다.

SELECT와 GROUP BY에는 캍은 컬럼이 들어가야 됩니다.

SELECT day, time, ROUND(AVG(total_bill))
FROM tips
GROUP BY day, time
ORDER BY ROUND(AVG(total_bill)) DESC

 

 

3. HAVING

HAVING은 GROUP BY 연산 결과물을 필터링합니다.

WHERE은 GROUP BY에 들어가지 전에 필터링합니다.

 

day별로 SUM(total_bill)의 합계를 구했는데 결과중에서 SUM(total_bill)가 1000미만인 결과는 제외했다.

SELECT day, SUM(total_bill)
FROM tips
GROUP BY day
HAVING SUM(total_bill) > 1000

 

WHERE은 GROUP BY 위에, HAVING은 GROUP BY 아래에 적어줍니다.

GROUP BY에 들어가는 데이터는 성별이 남자인 데이터만 들어갑니다.

GROUP BY로 나온 결과 중에서 SUM(total_bill)이 500미만인 결과는 제외합니다.

SELECT day, SUM(total_bill)
FROM tips
WHERE sex = 'Male'
GROUP BY day
HAVING SUM(total_bill) > 500

'SQL > MySQL 이론' 카테고리의 다른 글

정규표현식  (0) 2022.08.12
서브쿼리  (0) 2022.08.01
WHERE, ORDER BY  (1) 2022.07.26
MySQL 이론2  (0) 2022.07.18
MySQL 이론1  (1) 2022.07.18

관련글 더보기

댓글 영역