본문 바로가기
[스파르타 코딩클럽]/엑셀보다 쉬운, SQL

엑셀보다 쉬운 SQL - Group by, Order by, Alias -

by 수민띠 2023. 2. 10.

데이터 분석의 목적 : DB테이블에 저장된 데이터를 의미 있는 정보로 변환

통계 구하기
통계 : 최대 / 최소 / 평균 / 개수

Group by - 동일한 범주(category)를 갖는 데이터를 하나로 묶어, 범주별 통계를 내주는 것

범주 : 같은 특성을 지닌 부류나 범위
Order by - 필드의 값으로 데이터 정렬

성씨별 회원수 구하기

select name, count(*) from users
group by name;


쿼리가 실행되는 순서 from -> group by -> select

  1. from users : users 테이블 데이터 전체를 가져온다.
  2. group by name : 필드명 name을 지정해 같은 필드값을 가지는 데이터끼리 묶는다.
  3. select name, count(*) : name에 따라 묶어진 데이터가 각각 몇 개가 합쳐진 것인지 센다.

동일한 범주의 개수 구하기, count(*)

select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명


동일한 범주에서 최솟,최댓값,평균,합 구하기, min() / max() / avg() / sum()

select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;


정렬하기, order by

select * from 테이블명
order by 정렬의 기준이 될 필드명;

오름차순 정렬 : 기본값으로 설정되어 있지만 명시해주고 싶으면 필드명 뒤에 ASC
내림차순 정렬 : DESC

Where와 Group by, Order by 함께 사용해 보기

select payment_method, count(*) from orders
where course_title = "웹개발 종합반"
group by payment_method
order by count(*);


위 쿼리가 실행되는 순서: from → where → group by → select -> order by

  1. from orders : users 테이블 데이터 전체를 가져온다.
  2. where course_title = "웹개발 종합반" : 웹개발 종합반 데이터만 남긴다.
  3. group by payment_method : 같은 payment_method값을 가진 데이터끼리 묶는다.
  4. select payment_method, count(*) : payment_method에 따라 묶인 데이터별로 몇 개가 묶인지 센다.
  5. order by count(*): count(*)의 값을 기준으로 오름차순 정렬

별칭 짓기, Alias
혼동을 최소화하고 원하는 이름으로 결과를 출력하기 위해 사용
테이블명 또는 출력될 필드명에 뒤에 as 별칭하거나 띄어쓰기하고 별칭

select payment_method, count(*) as a from orders o
where o.course_title = '앱개발 종합반'
group by payment_method