- ORDER BY
ORDER BY는 정렬을 해주는 예약어이다. WHERE 다음에 사용해주며, 오름차순(ASC) / 내림차순(DESC)으로 수행할 수 있다.
왼쪽과 같이 오름차순(ASC)을 설정하면 종가(Close)가 작은 값부터 산출되고, 오른쪽과 같이 내림차순(DESC)으로 설정하면 종가(Close)가 큰 값부터 정렬되어 산출된다.
- GROUP BY
GROUP BY는 원하는 열들이나 조건들에 맞게 그룹을 지어주는 예약어이다.
SELECT month FROM kakao
GROUP BY month;
-- 그룹별 평균 계산
SELECT month, AVG(close) FROM kakao
GROUP BY month;
왼쪽과 같이 month를 GROUP BY 함수로 지정하면 각 그룹별로 묶인 상태로 출력된다. 이에 종가의 평균을 계산한 열을 추가해 주면 그룹별로 평균이 계산되어 오른쪽과 같이 출력된다.
- HAVING
GROUP으로 묶인 상태에서 조건을 추가하고 싶다면, WHERE이 아닌 GROUP BY 뒤에 HAVING 예약어를 작성한다.
SELECT month, AVG(close) FROM kakao
GROUP BY month
HAVING month = 'January';
Month로 묶인 그룹 중에 1월의 종가 평균만 출력하고 싶다면, HAVING 절 뒤에 month = 'January'라는 조건을 사용하여 작성한다.
SELECT month, AVG(close) FROM kakao
GROUP BY month
HAVING AVG(close) >= 100000
ORDER BY AVG(close) DESC;
GROUP BY에 ORDER BY을 추가한 쿼리로, 종가 평균이 10만 원 이상인 month 그룹 데이터를 가장 높은 순서대로 출력되도록 정렬했다. 6월 종가 평균이 가장 먼저 출력되는 것을 볼 수 있다.
SELECT month, AVG(close), MIN(high) FROM kakao
GROUP BY month
HAVING AVG(close) >= 100000
ORDER BY AVG(close) DESC;
여기서 주의할 점은, GROUP BY에 작성하지 않은 열(Column)은 SELECT에 작성할 수 없다!
→ 다만, 포함되지 않은 열이라도 집계 함수로 사용하면 출력할 수 있다. (ex. COUNT(*))
- LIMIT
LIMIT는 원하는 행의 개수만큼 출력한다는 예약어이다. 0부터 시작하기 때문에 예를 들어 5개의 데이터만 뽑고 싶다면 LIMIT 5를 설정하여 0, 1, 2, 3, 4 번째의 데이터가 출력된다.
SELECT month, YEAR(date), AVG(close)
FROM kakao
GROUP BY month, YEAR(date)
ORDER BY AVG(close) DESC
LIMIT 2, 5;
위와 같이 작성하면 3번째부터 5개의 행을 출력하라는 의미이다. LIMIT(시작행, 출력 개수)
지금까지 기술한 예약어를 작성할 때, 순서를 지키는 것이 중요하다! GROUP BY - ORDER BY -LIMIT
'Database > MySQL' 카테고리의 다른 글
[Programming][MySQL] NULL 값 다루기(Feat. 카카오 주가 데이터) (0) | 2021.07.25 |
---|---|
[Programming][MySQL] 연산을 할 수 있는 다양한 함수(Feat. 카카오 주가 데이터) (0) | 2021.07.25 |
[Programming][MySQL] DATE (날짜/시간) 함수(Feat. 카카오 주가 데이터) (0) | 2021.07.24 |
[Programming][MySQL] SQL 기본 문법(Feat. 카카오 주가 데이터) (0) | 2021.07.23 |
[Programming][MySQL] Workbench로 데이터 Import하기(Feat. 카카오 주가 데이터) (0) | 2021.07.22 |
댓글