본문 바로가기

개발 일지/SQL

[개발 일지] 엑셀 보다 쉬운, SQL _ 2주차

[ 학습 목표 ]

동일한 범주의 데이터를 묶어서 통계를 내주는 Group by를 이해한다.

출력하는 데이터를 필드의 값으로 정렬하여 출력하는 Order by를 익힌다.

조금 더 복잡한 분석을 위해 자주 사용되는 유용한 문법을 익힌다.

 

 

 

Group by

동일한 범주를 갖는 데이터를 하나로 묶어서,

범주별 통계를 내주는 것

 

 

Ex)

select name, count(*) from users

group by name;

Group by를 사용하면

같은 성씨의 데이터를 하나로 묶고

각 성씨의 회원수를 구할 수 있다 !

from → group by → select 순으로 쿼리가 실행된다

순서는 꼭 잘 지키자

 

 

Order by

마지막에 이 기능을 사용하면 오름차순으로 

깔끔하게 정렬이 가능하다.

 

 

최댓값 : max

최솟값 : min

평균값 : avg

합계 : sum

 

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

group by 범주가 담긴 필드명;

 

위치는 전부 동일하다 ! 

 

 

내림차순은 desc

(descending의 약자)

 

select name, count(*) from users

group by name

order by count(*) desc;

order by count(*)에 desc를 붙여주면 내림차순으로 정렬한다.

 

 


 

이제 응용해서 문제를 퀴즈를 풀어봤다 ! 

 

 

 

[퀴즈] 앱개발 종합반의 결제수단별 주문건수 세어보기

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

 

 

이 순서는 늘 기억하자

 

1) show tables로 어떤 테이블이 있는지 살펴보기

2) 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 limit 10 쿼리 날려보기

3) 원하는 정보가 없으면 다른 테이블에도 2)를 해보기

4) 테이블을 찾았다! 범주를 나눠서 보고싶은 필드를 찾기

5) 범주별로 통계를 보고싶은 필드를 찾기

6) SQL 쿼리 작성하기!

 


 

< 그 외 유용한 문법 >

 

SQL은 Alias라는 별칭 기능을 지원한다.

테이블명 뒤에 as를 붙여서 별칭을 추가하는 것도 가능하고,

출력될 필드에 별칭을 붙이는 것도 가능하다. 

 

 

 

예를들어, 

 

select payment_method as 결제방법, count(*) as 개수 from orders o

where o.course_title = '앱개발 종합반'

group by payment_method

from orders 뒤에 o를 붙여서 별칭을 지어주었다.

( 나중에 개수가 많아지면 헷갈릴 수 있어서 구분하기 위해 ) 

 

 

 

그리고 payment_method와 Count(*) 뒤에 as를 붙여 별칭을 지어줬는데,

as를 붙여서 별칭을 지어주면 

 

결과창에 지어준 별칭대로 출력된다 !

 

 


 [ 과제 ] 네이버 이메일을 사용하여 앱개발 종합반을 신청한 주문의

결제수단별 주문건수 세어보기

 

 

SELECT * FROM orders

WHERE email LIKE '%naver.com'

AND course_title = '앱개발 종합반'

orders로 원하는 필드가 있는 테이블명을 살펴보고 

네이버 이메일을 사용한다고 하니 Where문으로 지정해주고 

조건이 하나 더 있으니

And를 활용해서 앱개발 종합반을 신청한 사람들만 볼 수 있게 지정했다.

 

 

SELECT payment_method,COUNT(*) FROM orders

WHERE email LIKE '%naver.com'

AND course_title = '앱개발 종합반'

GROUP BY payment_method

 

결제수단별 주문건수를 세는게 목적이므로

Group By로 결제수단 묶어주고

Select (주문건수), Count(*)를 입력해서 결과값을 출력했다.

 

 

답은 이렇다! 

~ 과제 제출 완료 ~

 

 

그 뒤로 별칭 짓는 거 응용해보고 싶어서 

연습 해봤다 헷

 

SELECT payment_method as 결제수단 ,COUNT(*) as 개수 FROM orders

WHERE email LIKE '%naver.com'

AND course_title = '앱개발 종합반'

GROUP BY payment_method

한글로 바꾸고 싶어서 

as 결제수단 , as 개수로 바꿔주었다.

 

 

 

 

짠 ! 

 


파이썬으로 머리 터질 것  같았는데 

SQL 하니까 훨씬 나은 것 같다!! 

너무 재밌다!! 

 

사실 1주차 과제는 이해가 잘 안돼서 제대로 못 풀었는데 

이번 과제는 스스로 해냈다

너무 기분 좋다 ㅎㅅㅎ

이해하기 쉽게 설명해주셔서 두 번만 정독하면 바로 이해된다 !

다음 강의도 바로 들어야지