개발일기

SQL 1주차 Group by, Order by 문법 연습 본문

오늘의 공부일기/SQL 공부일기

SQL 1주차 Group by, Order by 문법 연습

츄98 2023. 3. 1. 23:21

Group by 문법

  • 동일한 범주의 데이터를 묶어주는 것
  • 범주별 통계를 내준다.
  • group by 문법 실행 순서: from  ->  group by  ->  select
  • where, group by 같이 쓰일 떄 실행 순서: from  ->  where  ->  group by  -> select

Order by 문법

  • 정렬해준다.
  • 그냥 order by만 쓰면 오름차순 정렬, order by와 desc를 같이 쓰면 내림차순 정렬이 가능하다.
  • order by 정렬의 기준이 되는 필드명
  • order by 문법 실행 순서: from  ->  select  ->  order by
  • group by, order by 같이 쓰일 때 실행 순서: from  ->  group by  ->  select  ->  order by
  • where, group by, order by 같이 쓰일 때 실행 순서: from  ->  where  ->  group by  ->  select  ->  order by 

 

예1) 성씨별 회원수 구하기

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

이걸 약간 변형하면?

예1-1) 성씨별 회원수 구하고, 회원수 적은 순서로 나열하기 (즉, 회원수를 오름차순 정렬하기)

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

만약에 이름을 오름차순으로 정렬하라고 하면, order by name이라고 쓰면 되겠죠?

그리고 내림차순 정렬일 경우, desc를 붙여주자

 

예2) 주차별 '오늘의 다짐'의 좋아요 최솟값 구하기

select week, min(likes) from checkins
group by week

최솟값을 구할 떄는 min함수를 사용하기

반대로, 최댓값을 구할려면, max함수를 사용하면 됩니다.

 

예3) 주차별 '오늘의 다짐'의 좋아요 평균값 구하기

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

이걸 또 변형해볼까요?

지금 평균이 소수점 넷째자리까지 나와있는데,

round함수를 이용하면, 반올림을 소수점 몇 째자리에서 할지 정할 수 있어요.

예3-1) 주차별 '오늘의 다짐'의 좋아요 평균값을 소수점 둘째 자리에서 반올림하여 구하기

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

round(구하고자하는 값, 반올림할 소수점 자리) 이렇게 쓰기!

예4) 주차별 '오늘의 다짐'의 좋아요 합계 구하기

select week, sum(likes) from checkins
group by week

예5) 앱개발 종합반의 결제수단별 주문건수 세어보기 (오름차순 정렬)

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

이제 위 내용들을 가지고, 퀴즈를 풀어보자!

퀴즈1) Gmail 을 사용하는 성씨별 회원수 세어보기 (기왕이면 보기 좋게 회원수는 오름차순 정렬하기~)

select name, count(*) from users
where email like '%gmail.com'
group by name
order by count(*)

퀴즈2) course_id별 '오늘의 다짐'에 달린 평균 like 개수 구해보기 (기왕이면 보기 좋게 소수점 첫째자리에서 반올림~)

select course_id , round(avg(likes),1) from checkins
group by course_id

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

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

as 별칭(alias) 사용함~

 

 

오늘은 group by와 order by 문법을 배워봤다..!

이제 데이터를 분류할 수 있고, 통계도 낼 수 있다~

점점 dbeaver로 할 수 있는 것이 많아지고 있어서 다음이 더 기대된다.

그럼 계속 파이팅해보자!