스파르타코딩/SQL

[스파르타코딩클럽] 엑셀보다 쉬운 SQL - 2주차 개발일지

햇살아래 2021. 6. 17. 16:34

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