[SQL] 기본개념 2

doyeonlee·2022년 2월 7일
0

개발일지 2022

목록 보기
11/16
post-thumbnail

기본문법

group by

: 동일한 범주 내 묶기.
count시에 많이 쓰인다.

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

ex)

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

이 쿼리가 실행되는 순서
users 테이블에서 name을 찾고 group by를 해준다.
그 후 count를 해준다.

즉, from - group by - select 순으로 실행!


order by

: 데이터 정렬

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가 붙으면 내림차순으로 정렬


문법 활용

group by + 최솟값

: 동일한 법주내 최솟값 구하기

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

min()을 해준다.


group by + 최댓값

: 동일한 범주내 최댓값 구하기

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

max()을 해준다.


group by + 평균

: 동일한 범주 내 평균 구하기

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

avg()를 해준다.


group by + 합계

: 동일한 범주 내 합계 구하기

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는 정렬이기 때문에 맨 마지막 순서로 읽힌다.


이 외 문법

Alias

: 별칭

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를 붙여서 별칭으로 쓸 수 있다.


profile
느려도 천천히 꼼꼼하게 !

0개의 댓글