반응형

범주의 통계를 내주는 Group by

 

 

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

1) from users: users 테이블에서 데이터를 불러온다.
2) group by name: name이라는 필드에서 동일한 값을 갖는 데이터를 하나로 합쳐준다.
3) select name, count(): 이름과 count()를 출력해 주는데,
    여기서 count(*)는 group by로 합쳐진 데이터의 개수를 세어주는 것!

 

 

🍪 동일한 범주에서의 최솟값 구하기

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

 

🍪 동일한 범주에서의 최댓값 구하기

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

 

🍪 동일한 범주의 평균값 구하기

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

⭐round 사용하여 소수점 조절하기

     뒤에 숫자로 소수점 자리 조절, 없을 시에는 정수 출력

select week, round(avg(likes), 2) from checkins
group by week;

 

🍪 동일한 범주에서의 합계 구하기

select week, sum(likes) from checkins
group by week;
select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;

 

 

 

깔끔한 정렬이 필요할 땐? Order by

 

오름차순 정렬

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

내림차순 정렬

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

 

규칙

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

 

 

 

Where와 함께 사용해보기

 

select payment_method, count(*) from orders
where course_title = "웹개발 종합반"
group by payment_method;
위 쿼리가 실행되는 순서: from → where → group by → select

 

 

 

이외 유용한 문법 배워보기

 

⭐ 별칭 기능: Alias

select * from orders o
where o.course_title = '앱개발 종합반'

💛 as를 붙여서 별칭을 추가하는 것도 가능

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

 

 

 

 

문제

 

🍪 네이버 이메일을 사용하여 앱개발 종합반을 신청한 주문의 결제수단별 주문건수 세어보기

select payment_method, count(*) from orders
where email like '%naver.com' and course_title = '앱개발 종합반'
group by payment_method
반응형

'독학코딩 > SQL' 카테고리의 다른 글

스파르타_SQL 4  (0) 2022.12.26
스파르타_ SQL 3주차  (0) 2022.12.22
스파르타_SQL 1주차  (2) 2022.12.13

+ Recent posts