기본문법
: 동일한 범주 내 묶기.
count시에 많이 쓰인다.
select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명;
ex)
select name, count(*) from users
group by name;
이 쿼리가 실행되는 순서
users 테이블에서 name을 찾고 group by를 해준다.
그 후 count를 해준다.
즉, from - group by - select 순으로 실행!
: 데이터 정렬
select * from 테이블명
order by 정렬의 기준이 될 필드명;
ex)
select name, count(*) from users
group by name
order by count(*);
count를 이용해 센 데이터를 order by를 이용해 정렬해준다.
order by count(*)
뒤에 asc가 붙으면 오름차순으로 정렬 (기본)
order by count(*)
뒤에 desc가 붙으면 내림차순으로 정렬
문법 활용
: 동일한 법주내 최솟값 구하기
select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
min()을 해준다.
: 동일한 범주내 최댓값 구하기
select 범주가 담긴 필드명, max(최댓값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
max()을 해준다.
: 동일한 범주 내 평균 구하기
select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
avg()를 해준다.
: 동일한 범주 내 합계 구하기
select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
sum()을 해준다.
: 웹개발 종합반의 결제수단별 주문건수 세어보기
select payment_method, count(*) from orders
where course_title = "웹개발 종합반"
group by payment_method;
orders 테이블에서
course_title이 "웹개발 종합반"인 데이터만 남기고
payment_method로 group by 하고,
count해서 나타내 준다.
순서 : from - where - group by - select
만약 여기서 order by가 추가 된다면
= order by는 정렬이기 때문에 맨 마지막 순서로 읽힌다.
이 외 문법
: 별칭
select * from orders o
where o.course_title = '앱개발 종합반'
여기서 orders 테이블 뒤에 붙는 o가 alias이다.
이거 말고도,
select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'
group by payment_method
이처럼 as cnt를 붙여서 별칭으로 쓸 수 있다.