GROUP BY
)GROUP BY
)SELECT (기준 컬럼)
,(집계 함수값)
FROM (테이블)
GROUP BY (기준 컬럼)
⚠️ 기준값도 SELECT
문에 넣어줘야 하는 것 잊지 말기!
그냥 기준을 두 개 연달아 쓰면 된다!
SELECT (기준 컬럼1)
,(기준 컬럼2)
,(집계 함수값)
FROM (테이블)
GROUP BY (기준 컬럼1), (기준 컬럼2)
ORDER BY (기준 컬럼1), (기준 컬럼2)
♟️ SELECT → FROM → GROUP BY → ORDER BY 순서 잘 지키기!
♟️ GROUP BY 뒤에 쓰는 컬럼 순서는 의미가 없다! → 그냥 보기 편한 순서대로 쓰면 됨
(⚠️ ORDER BY는 컬럼 순서에 따라서 우선 순위가 정해짐!)
♟️ GROUP BY에 숫자를 쓰는 경우도 있는데... 컴럼 이름이 아니라 컬럼 위치를 적은 것
⚠️ 이런 작성법은 가독성이 떨어지니까 추천하지 않음
HAVING
)HAVING
: GROUP BY 후 연산 결과물을 필터링WHERE
: GROUP BY 하기 전 필터링SELECT (기준 컬럼)
,(집계 함수값)
FROM (테이블)
GROUP BY (기준 컬럼)
HAVING (기준) < (값);
♟️ SELECT → FROM → WHERE → GROUP BY → HAVING
⚠️ HAVING 은 꼭 GROUP BY 뒤에 써야한다!
WHERE
을 쓰고, 언제 HAVING
을 쓰는 걸까?아무런 가공 없는 원본 데이터에서 조건을 쓰려면 WHERE
GROUP BY를 사용하여 연산한 결과에서 조건을 쓰려면 HAVING
ORDER BY
)GROUP BY 한 데이터를 정렬하기!
SELECT (기준 컬럼)
,(집계 함수값)
FROM (테이블)
GROUP BY (기준 컬럼)
ORDER BY (정렬할 기준 컬럼) ASC/DESC
➡️ ASC 오름차순
➡️ DESC 내림차순
♟️ SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT
➡️ 실행 순서 때문!
WHERE절을 실행할 때 아직 SELECT절이 실행되기 전임
☹️ SELECT에서 정의한 별칭은 WHERE 절에서 사용할 수 없다
😀 ORDER BY는 SELECT 이후에 실행되기 때문에 별칭 사용 가능
실행 순서 상 GROUP BY, HAVING은 별칭을 사용할 수 없는데... 몇몇 DATABASE에서는 사용이 가능함! 그것이 바로... MySQL
DATE_ADD()
: 날짜 더하기SELECT DATE_ADD('기준 날짜', INTERVAL 1 DAY/MONTH/YEAR)
DATE_SUB()
: 날짜 빼기SELECT DATE_SUB('기준 날짜', INTERVAL 1 DAY/MONTH/YEAR)