GROUP BY 와 HAVING
설명
GROUP BY를 사용할 때는 두가지를 기억
- 특정 컬럼을 그룹화 하는 GROUP BY
- 특정 컬럼을 그룹화한 결과에 조건을 거는 HAVING
WHERE과 HAVING
- WHERE는 그룹화 하기 전 조건
- HAVING은 그룹화 후에 조건
사용법
SELECT
m.company_code AS companyCode
,SUM(wrong_password_count) AS totalWrongCount
FROM `member` m
WHERE m.company_code NOT IN ('C998', 'C999')
GROUP BY companyCode
HAVING totalWrongCount > 0
DISTINCT 와 GROUP BY
- GROUP BY는 DISTINCT + 정렬
- GROUP BY 뒤에 ORDER BY NULL을 붙혀 주면 정렬작업을 제외하고 그룹핑
DISTINCT로만 가능한 기능
-- 이런 형태의 쿼리는 서브 쿼리를 사용하지 않으면 GROUP BY로는 작성하기 어렵다.
SELECT COUNT(DISTINCT column1)
FROM table;
GROUP BY로만 가능한 기능
-- 집계 함수(Aggregation)가 필요한 경우에는 GROUP BY를 사용해야 한다.
SELECT column1, MIN(column2), MAX(column2)
FROM table
GROUP BY column1;