[수업목표]
1. 동일한 범주의 데이터를 묶어서 통계를 내주는 Group by를 이해한다.
2. 출력하는 데이터를 필드의 값으로 정렬하여 출력하는 Order by를 익힌다.
3. 조금 더 복잡한 분석을 위해 자주 사용되는 유용한 문법을 익힌다.
[배운 것]
- 위에서 아래 순서대로 쓰는 게 아니라 의식의 흐름대로 쓴다
select name, count(*)from users
group by name 를 쓴다고 할 경우...
select name, count(*)from users
group by name
1) users에서 데이터를 불러오기 할 건데 select * from users
2) 그걸 name으로 그룹을 만들어줄 거야 group by name
3) name으로 묶은 그룹 당 숫자가 몇 갠지 각각 카운트해줘 name, count(*)
- group by 기능
최솟값 구하기 min(최솟값을 알고 싶은 필드명)
최댓값 구하기 max, 합계 sum
select week, min(likes) from checkins
group by week
select week, max(likes) from checkins
group by week
select week, sum(likes) from checkins
group by week
평균 avg, 소숫점이 거슬릴 때 round로 감싸주기
select week, round(avg(likes),0) from checkins
group by week
- order by 기능
select name, count(*) from users
group by name
order by count(*)
오더 바이만 단독으로 사용할 수 없거나 그룹 바이 이후에만 사용하는 것은 아니지만 보통은 모든 데이터 산출이 끝난 후 최종 정리 할 때 쓰고 기본적으로 아무것도 안 붙이면 오름차순으로 나옴.
숫자만 가능한 거 아니구 문자열, 시간 정렬도 가능함 order by email, order by created_at 이런 식으로 ㅇㅇ
내림차순으로 보고 싶은 경우 count(*) desc 라고 쓰면 ㅇㅋ
오름차순은 asc 이지만 안 써도 됨.. 걍 참고삼아서 알아놓을 것.
- where절과 함께 사용해보기
select payment_method, count(*) from orders
where course_title = '웹개발 종합반'
group by payment_method
order by count(*) desc
먼저 orders에서 웹개발 종합반만 데이터를 불러오고 그 후에 페이먼트 메쏘드로 그룹을 만들고 그 후에 오더 바이로 카운트
참고로 group by로 묶고 셀렉트 옆에 꼭 그룹 안 적어도 되지만 나중에 뭐가 뭔지 모르니까 귀찮아도 쓰는 습관을 갖자
- 삽질해보기
1번 문제는 휘리릭 풀었고...
2번 문제.. gmail을 사용하는 성씨별 회원수 세어보기.. where와 like를 함께 써라...
select name, email, count(*) from users
group by name; where email like '%gmail.com';
라는 창의적인 오답과 함께... 언뜻 봐도 나와야 할 화면이 아니라 다른 화면이 나와서 또 한참을 끙끙..
결국 포기하고 3번으로 감...
3번째... 코스별 오늘의 다짐에 달린 평균 like 개수 구하기
select course_id, likes from checkins
group by course_id
order by avg(likes)
라는 오답을 거쳐
select course_id, avg(likes) from checkins
group by course_id
정답 나와따아아아악 ㅠㅠ
그래서 2번째 문제 다시 시도....
다시 차근 차근히... 일단 gmail.com 유저를 뽑아주고... 그들의 이름을 그룹으로 묶고.. 숫자를 센다...
select name, count(*) from users
where email like '%gmail.com'
group by name
끝까지 하고 나니까 뿌듯하다 답 안 보고 해냈다!
그리고 한 편으로는 이렇게 간단한데 이렇게 1시간 동안 붙잡고 있을 일이가..... 이것을 현타라고 부르자..
- 꿀팁? 다음 주에 할 것... Alias (알리아스) 별칭 기능
쿼리가 점점 길어지니까 별칭을 붙어 줄 수 있다.
[수강소감]
나는 기초는 비교적 금방 따라하는데 응용을 진짜 못하는 것 같음...
그래도 일단 숙지하면 비교적 금방 하는 것 같다.
숙제 10분이면 다 할 거라고 하셨는데 2분 걸렸다.
이게 다 삽질하기에서 1시간 넘게 끙끙 거린 덕이다.
'개발일지' 카테고리의 다른 글
[내일배움단] 엑셀보다 쉬운 SQL - 3주차 / 22년 1월 11일 (1) | 2022.01.11 |
---|---|
[내일배움단] 왕초보 비개발자를 위한 웹개발 종합반 1주차 숙제 / 22년 1월 9일 (0) | 2022.01.10 |
[내일배움단] 왕초보 비개발자를 위한 웹개발 종합반 1주차 / 22년 1월 6일 (0) | 2022.01.06 |
[내일배움단] 왕초보 비개발자를 위한 웹개발 종합반 1주차 / 22년 1월 5일 (0) | 2022.01.05 |
[내일배움단] 엑셀보다 쉬운 SQL - 1주차 / 22년 1월 5일 (0) | 2022.01.05 |
댓글