사전캠프 SQL 2주차 - SQL로 범주별 연산, 정렬하기
오늘의 핵심 학습 키워드
#GROUP BY #ORDER BY
GROUP BY는 컬럼의 데이터를 범주화하는 기능을 하며,
ORDER BY는 컬럼의 데이터를 오름차순ㆍ내림차순으로 정렬하는 기능을 가지고 있다.
우선, 핵심 키워드 설명 전에 SQL의 기본 문법을 몇 가지 알아보자.
1. SQL 기본문법 (SUM, AVG, COUNT, MAX, MIN)
food_orders라는 테이블이 있고, 해당 테이블에는 음식 주문건에 대한 가격 데이터가 들어있는 price 컬럼이 있다고 가정해보자.
만약 음식 주문건에 대한 전체 금액을 확인하거나, 평균금액을 확인하고 싶다면 어떻게 해야 할까?
이전 시간에서 SELECT 절은 출력할 컬럼을 지정하는 기능을 가지고 있다고 설명했었다.
따라서, 지금부터 설명할 기능들은 SELECT 절에 입력해야 SQL이 정상적으로 작동한다.
SUM(컬럼명) : 입력한 컬럼명의 데이터를 합산해서 보여주는 기능
AVG(컬럼명) : 입력한 컬럼명의 데이터들 평균을 보여주는 기능
COUNT(컬럼명) : 입력한 컬럼명의 데이터 개수를 세어 보여주는 기능
MAX(컬럼명) : 입력한 컬럼명의 데이터 중 최대값의 데이터를 보여주는 기능
MIN(컬럼명) : 입력한 컬럼명의 데이터 중 최소값의 데이터를 보여주는 기능
상기 구문들을 통해서 내가 원하는 컬럼의 데이터 합산값, 평균값, 데이터 개수, 최대값, 최소값 등을 확인 할 수 있다.
코드 입력방법은 아래의 예시를 참조하자.
select sum(price),
avg(price),
count(price),
max(price),
min(price)
from food_orders

보다시피 SQL의 기본 문법은 엑셀에서도 자주 사용되는 문법들이니 크게 어려운 부분이 없다.
위에서 설명한 기본 문법을 이용해 GROUP BY와 ORDER BY에 대해 설명하겠다.
2. GROUP BY
food_orders라는 테이블에 음식의 종류에 대한 정보가 들어있는 cuisine_type 이라는 컬럼이 있다고 가정해보자.
만약 음식 종류별 합산 주문가격이나 평균 주문가격을 알고싶다면, sum이나 avg를 사용하는 것 만으로는 원하는 데이터를 얻을 수가 없다.
음식 종류별로 합산/평균 데이터를 따로 보여주는 것이 아니라, 전체 데이터를 합산/평균내서 보여주기 때문이다.
이런 경우에 사용 가능한 것이 컬럼 내의 데이터를 범주화해주는 GROUP BY이다.
'GROUP BY 컬럼명'과 같은 형태로 사용 가능하며, 입력한 컬럼 내의 데이터를 동일한 데이터끼리 범주화해주는 기능을 가지고 있다.
이를 이용해 음식 종류별 합산/평균가격을 출력하는 코드를 만들어보자.
select cuisine_type,
sum(price),
avg(price)
from food_orders
group by cuisine_type
예시와 같이 입력하면 아래와 같은 출력결과를 확인할 수 있다.

3. ORDER BY
이제 음식의 종류별로 합산 주문금액과 평균 주문금액을 확인 할 수 있게 되었다.
여기서 합계 주문금액이 작은 순서대로 정보를 출력하고 싶을 때 사용하는 문구가 ORDER BY이다.
'ORDER BY 컬럼명'을 입력하면 입력한 컬럼명의 정보를 내림차순으로 정렬해서 확인 할 수 있게 된다.
select cuisine_type,
sum(price),
avg(price)
from food_orders
group by cuisine_type
order by sum(price)
GROUP BY 아랫줄에 ORDER BY 절을 입력해서 sum(price) 컬럼의 정보가 내림차순으로 정렬되도록 코드를 작성했다.
이를 실행시키면 아래와 같은 출력결과를 얻을 수 있다.

만약 sum(price)의 데이터를 높은가격부터 노출되게 하고 싶다면, 'ORDER BY 컬럼명 DESC' 와 같은 형식으로,
아래와 같이 ORDER BY 절 맨 뒤에 DESC 문구를 추가해주면 정상적으로 내림차순 정렬이 적용된다.
select cuisine_type,
sum(price),
avg(price)
from food_orders
group by cuisine_type
order by sum(price) desc

4. 후기
SQL 2주차 강의도 무난하게 수강 완료했지만, 나보다 더 먼저 SQL 강의를 수강하기 시작한 팀원들이 3주차부터 입력할게 많아졌다는 반응을 보였다.
하긴.. 이렇게 쉽기만 했으면 개나소나 전부 SQL 마스터가 됐을테니 어느 정도 예견된 일이긴 하다.
내일 SQL 강의는 평소보다 집중해서 들어야겠다.