반응형
범주의 통계를 내주는 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 |