카테고리 없음
코딩 배우기 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
- from users: users 테이블 데이터 전체를 가져옵니다.
- group by name: users 테이블 데이터에서 같은 name을 갖는 데이터를 합쳐줍니다.
- select name, count(*): name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어줍니다.
- 예) 이**, 이**, 김**, 김**, 박** 이렇게 데이터가 있었다면, 이는 2개, 김은 2개, 박**은 1개겠죠!
- 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