[스파르타코딩클럽] 엑셀보다 쉬운 SQL - 2주차 개발일지
2주차 수업 목표
- 동일한 범주의 데이터를 묶어서 통계를 내주는 Group by를 이해한다.
- 출력하는 데이터를 필드의 값으로 정렬하여 출력하는 Order by를 익힌다.
- 조금 더 복잡한 분석을 위해 자주 사용되는 유용한 문법을 익힌다.
01. 범주의 통계를 내주는 Group by
예제) 성씨별로 몇 명의 회원이 있는지 알아보자
-> where절을 사용해서 수십개의 쿼리를 작성하는 것은 비효율적, group by를 사용하여 해결하자
select name, count(*) from users
group by name
실행 순서 : from -> group by -> select
1. from users : users 테이블에서 데이터를 불러오다
2. group by name : name 필드에서 동일한 값을 갖는 데이터를 하나로 묶어준다.
3. select name, count(*) : 이름과 count(*)를 출력, count(*)는 group by로 합쳐진 데이터의 개수를 세어준다.
Group by : 동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것
기능
- count(*) : 동일한 범주의 갯수
- min(알고 싶은 필드명) : 동일한 범주 특정 필드의 최솟값
- max(알고 싶은 필드명) : 동일한 범주 특정 필드의 최댓값
- avg(필드명) : 동일한 범주 특정 필드의 평균값
- sum(알고싶은 필드명) : 동일한 범주 특정 필드의 합계
02. 깔끔한 정렬을 해주는 Order by
예제) 성씨별 회원수 데이터를 정렬하자
select name, count(*) from users
group by name
order by count(*)
실행 순서: from -> group by -> select -> order by
1. from users : users 테이블의 데이터 전체를 불러온다.
2. group by name: name 필드에서 동일한 값을 갖는 데이터를 하나로 묶어준다.
3. select name, count(*) : name에 따라 합쳐진 데이터가 각각 몇개인지 합쳐서 세어준다.
4. order by count(*) : 합쳐진 데이터의 개수에 따라 오름차순으로 정렬해준다.
03. Where절과 함께 사용하기
select payment_method, count(*) from orders
where course_title = "웹개발 종합반"
group by pament_method
실행 순서: from -> where -> group by -> select
04. 별칭 기능 Alias
필드의 혼동을 최소화하고 원하는 이름으로 결과를 출력하기 위해 사용
select payment_method, count(*) as cnt from orders o
where o.course_title = "앱개발 종합반"
group by payment_method