TIL 2021.07.20 | (SQL) Group by & Order by

제가 SQL을 다루는 것이 아직 많이 서툽니다. 틀린 점이나 개선해야할 점을 남겨주시는 것은 언제나 환영입니다. 🙏

● 여름방학 SQL 공부하기
SQL 이론 학습을 위해 SQLD 공부 중 → 9월 中 SQLD 자격 취득이 목표
SQL 학습을 위해 온라인 강의 수강 중: 스파르타 코딩클럽

TIL 2021.07.20 start!

1. 범주의 통계를 내주는 Group by

1) Group by 란?

▶동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것
▶'~별로 몇 명'

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

▶쿼리 실행되는 순서 : from → group by → select
▶쿼리 작성시 순서:

#1번
select * from users
group by name;
#2번 (완성)
select name, count(*) from users
group by name;

▶숫자, 문자열, 시간 모두 정렬 가능!

2) 통계값

▶최소값: min(필드값)

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

▶최댓값: max(필드값)

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

▶최댓값: avg(필드값)

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

▶합계: sum(필드값)

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

2. 깔끔하게 정렬해주는 order by

1) order by 사용법

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

2) 오름차순, 내림차순

▶오름차순: 작성하지 않아도 됨. (기본설정값)
▶내림차순: desc

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

▶쿼리 실행되는 순서 : from → group by → select → order by

3. Where절과 함께 쓰는 Group by, Order by

1) Where절 위치

#예시
select payment_method, count(*) from orders
where course_title = "웹개발 종합반"
group by payment_method;

▶group by와 select 사이에 where로 조건을 넣어주면 끝!

2) 쿼리 실행 순서
from → where → group by → select

4. 오늘의 연습💛

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

select week, count(*) from checkins
group by week;

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

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

select week, avg(likes) from checkins
group by week;
select week, round(avg(likes),2) from checkins
group by week; #round → 자릿수
select week, sum(likes) from checkins
group by week;

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

#퀴즈1. 앱개발 종합반의 결제수단별 주문건수 세어보기

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

#퀴즈2.  Gmail을 사용하는 성씨별 회원수 세어보기

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

#퀴즈3. course_id별 '오늘의 다짐'에 달린 평균 like 갯수 구해보기 +자릿수 나타내기

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

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

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

숙제>>

5. 이외의 문법

1) 별칭 기능: Alias (알리아스)
쿼리가 점점 길어지면서 종종 헷갈리는 일이 생길 수 있음.
그래서 SQL은 Alias라는 별칭 기능을 지원.

❗o → orders 를 의미함❗

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

2) 별칭 기능: as

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

좋은 웹페이지 즐겨찾기