카테고리 없음

코딩 배우기 2차전_SQL 2주차 클래스

개발자A입니다 2022. 5. 3. 12:42

2주차이지만 매일 1주차를 끝내는 것을 목표로 하고 있어서 2일 차 입니다ㅎㅎ

 

오늘 배운 것들을 나열해보자면,

 

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

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

이름별로 그룹이 만들어져서 users 테이블에 있는 name 필드값이 그룹별로 개수가 세어집니다.

+동일한 범주에서의 최대/최소/평균/합계 구하기

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

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

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

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

 

 

2) 깔끔한 정렬이 필요할 땐? Order by

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

order by로 count(*)를 정렬을 하며 기본값은 오름차순이다.

+오름차순/내림차준 정렬시

내림차순
select name, count(*) from users
group by name
order by count(*) desc;

오름차순은 기본 값이나 이렇게도 가능
select name, count(*) from users
group by name
order by count(*) asc;

 

3) Order by 제대로 알아보기: SQL 쿼리가 실행되는 순서

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: users 테이블 데이터에서 같은 name을 갖는 데이터를 합쳐줍니다.
  3. select name, count(*): name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어줍니다.
  4. 예) 이**, 이**, 김**, 김**, 박** 이렇게 데이터가 있었다면, 이는 2개, 김은 2개, 박**은 1개겠죠!
  5. order by count(*): 합쳐진 데이터의 개수에 따라 오름차순으로 정렬해줍니다.

 

4) 별칭 기능: Alias

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

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

from뒤에 o처럼 영문지 하나 두개를 이용하여 별칭을 만들거나 as를 이용하여 별칭으로 표기할 수 있습니다.

 

+숙제

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

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