DB
MySQL 기초(5)
with_AI
2022. 5. 4. 01:16
GROUP BY
컬럼에서 동일한 값을 가지는 로우를 그룹화 하는 키워드
SELECT type
FROM pokemon.mypokemon
GROUP BY type;
HAVING
가져올 데이터 그룹에 조건을 지정해주는 키워드
HAVING 조건식 -> 참이 되는 그룹만 선택
HAVING절의 조건식에서는 그룹 함수를 쓴다.
COUNT
그룹의 값 수를 세는 함수
COUNT(1)은 하나의 값을 1로 세어주는 표현
SUM
그룹의 합을 계산한다
AVG
그룹의 평균을 계산하는 함수
MIN
그룹의 최솟값
MAX
그룹의 최대값
SELECT type, COUNT(*), COUNT(1), AVG(height), MAX(weight)
FROM pokemon.mypokemon
GROUP BY type;

COUNT(*)은 ROW의 개수를 세는것
COUNT는 하나의 ROW를 1개로 하여 세는 것
SELECT type, COUNT(*), COUNT(1), AVG(height), MAX(weight)
FROM pokemon.mypokemon
GROUP BY type
HAVING COUNT(1) = 2;
CNT 값이 2인 type만 반환

쿼리 실행 순서
SELECT는 필수

작성순서와 실행 순서는 다르다.
최종예제
SELECT type, AVG(weight)
FROM mypokemon
WHERE LENGTH(name) > 5
GROUP BY type
HAVING AVG(weight) >= 20
ORDER BY 2 DESC;
SELECT type, MIN(height), MAX(height)
FROM mypokemon
WHERE number < 200
GROUP BY type
HAVING MAX(weight) >= 10 AND MIN(weight) >= 2
ORDER BY 2 DESC, 3 DESC;