[MySQL] GROUP BY

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;

links

social