01. 통계적인것 배울거임
통계: 최대, 최소, 평균, 갯수
통계를 통해 날것의 데이터에서 의미있는 정보로 변환 시켜주는 것을 배울 것임
범주(카테고리)의 각각 정보를 알아내는 것도 배울 것임 - Group by
깔끔하게 데이터 정리 - Order by
02.
users에서 name 별로 그룹지어주고, 그 그룹에 들어있는 갯수를 세줘라
name과 그룹에 들어간 숫자를 필드로 보여줘라.
select name, count(*) from users
group by name
03. SQL코드에서는 순서가 중요: 이름을 먼저 그룹지어주고, 그 다음에 이름필드와 그룹의 각각 숫자를 세주는 것을 넣어준다.
위 쿼리가 실행되는 순서: from → group by → select
- from users: users 테이블 데이터 전체를 가져옵니다.
- group by name: users 테이블 데이터에서 같은 name을 갖는 데이터를 합쳐줍니다.
- select name, count(*): name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어줍니다.
- 예) 이**, 이**, 김**, 김**, 박** 이렇게 데이터가 있었다면, 이는 2개, 김은 2개, 박**은 1개겠죠!
where. group by를 같이 쓰는 퀴즈: naver.com 이메일을 쓰는 사람들 중 성씨별로 몇명씩 있는지?
SELECT name, count(*) from users
where email like '%naver.com'
group by name
04. Group by 기능 알아보기
주차별로 '오늘의 다짐' 갯수 구하기
select week, count(*) from checkins
group by week
주차별로 좋아요 최소 갯수 구하기
min(필드명)을 사용함
select week, min(likes) from checkins
group by week
주차별로 좋아요 최소 갯수 구하기
max(필드명)을 사용함
select week, max(likes) from checkins
group by week
주차별로 좋아요 평균갯수 구하기
avg(필드명)을 사용함
select week, avg(likes) from checkins
group by week
소수점으로 끊어주기
round( ,2)
select week, round(avg(likes),2) from checkins
group by week
주차별로 좋아요 합계 구하기
sum(필드명)을 사용함
select week, sum(likes) from checkins
group by week
05. 깔끔한 정렬이 필요할 땐? Order by
정렬은 보통 다른 모든 것들이 끝나고 마지막에 쓰인다.
아무것도 안 붙여주고 order by만 쓰면 작은 것 부터 정렬된다 오름차순 (asc : 안써줘도 된다)
select name,count(*) from users
group by name
order by count(*)
내림차순으로 해주려면 desc 붙이면 된다.
select name,count(*) from users
group by name
order by count(*) desc
위 쿼리가 실행되는 순서: from → group by → select → order by
- from users: users 테이블 데이터 전체를 가져옵니다.
- group by name: users 테이블 데이터에서 같은 name을 갖는 데이터를 합쳐줍니다.
- select name, count(*): name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어줍니다.
- 예) 이**, 이**, 김**, 김**, 박** 이렇게 데이터가 있었다면, 이는 2개, 김은 2개, 박**은 1개겠죠!
- order by count(*): 합쳐진 데이터의 개수에 따라 오름차순 or 내림차순으로 정렬해줍니다
select * from checkins
order by likes desc
order by는 group by랑 세트로 쓰이는게 아니라 SQL query 어디에서나 쓸 수 있다.
세미콜론은 끝을 표현해주는 것인데 강사님이 우리들은 굳이 안 붙여도 된다고 하심.
06. where 과 같이 사용해보기
웹개발 종합반의 결제수단별 주문건수 세어보기 + 내림차순
select payment_method ,count(*) from orders
where course_title = '웹개발 종합반'
group by payment_method
order by count(*) desc
- from orders: users 테이블 데이터 전체를 가져옵니다.
- where course_title = "웹개발 종합반": 웹개발 종합반 데이터만 남겨줍니다.
- group by payment_method: 같은 payment_method을 갖는 데이터를 합쳐줍니다.
- select payment_method, count(*): payment_method에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어줍니다.
- 예) CARD, CARD, kakaopay 이렇게 데이터가 있었다면, CARD는 2개, kakaopay는 1개겠죠!
- order by는 맨 나중에 실행됩니다! (결과물을 정렬해주는 것이기 때문!)
08. order by, group by 연습해보기
order by 문자열 기준으로 정렬가능하다
알파벳, 한글 순서대로 나옴
시간기준으로도 정렬 가능
group by 연습퀴즈!
앱개발 종합반의 결제수단별 주문건수 세어보기
select payment_method ,count(*) from orders
where course_title = '앱개발 종합반'
group by payment_method
Gmail 을 사용하는 성씨별 회원수 세어보기
select name, count(*) from users
where email like '%gmail.com'
group by name
course_id별 '오늘의 다짐'에 달린 평균 like 개수 구해보기
select course_id,avg(likes) from checkins
group by course_id
course_id별 '오늘의 다짐'에 달린 평균 like 개수 구해보기, 소수점 2자리 까쥐
select course_id,round(avg(likes),2) from checkins
group by course_id
09. Alias 별칭 기능
select * from orders o
where o.course_title = '앱개발 종합반'
필드명이 count(*)에서 as 뒤에 있는 cnt로 바뀐다.
select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'
group by payment_method
10. 숙제: 네이버 이메일을 사용하여 앱개발 종합반을 신청한 주문의 결제수단별 주문건수 세어보기
select payment_method, count(*) from orders o
where email like '%naver.com' and course_title = '앱개발 종합반'
group by payment_method
'개발자 되는 중 > 개발 공부' 카테고리의 다른 글
스파르타 코딩 클럽 SQL 개발일지 4주차 (0) | 2022.09.27 |
---|---|
스파르타 코딩 SQL 개발일지 3주차 (1) | 2022.09.22 |
스파르타 코딩 SQL 개발일지 1주차 (0) | 2022.09.15 |
스파르타 코딩 웹 개발 개발일지 3주차 (0) | 2022.08.27 |
스파르타 코딩 웹 개발 개발일지 2주차 (1) | 2022.08.26 |