ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL 2주차
    SQL 2023. 5. 7. 08:08

    통계: 최대 / 최소 / 평균 / 개수

     

    👉 데이터 분석의 목적: 쌓여있는 날것의 데이터 → 의미를 갖는 '정보'로의 변환

     

    • 데이터베이스 테이블에 저장된 데이터: 쌓여있는 날것의 데이터
    • 가장 많은 Like를 받은 사람의 이름, 전체 신청자수, 평균 연령: 의미있는 '정보'

    👉 더 나아가면? '범주 (category)' 각각의 정보가 궁금할 수 있습니다

     

    • 예) 과목별 신청자 평균 연령, 과목별 신청자수, 성씨별 회원수 등

     

    1. 동일한 범주의 데이터를 묶어주는 Group by ('~별' 표현에 붙임)

     

    동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것을 의미해요. Group by를 이용하면

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

    2) 각 성씨의 회원수를 구할 수 있어요.

     

    group by = 성씨 별, 결제수단 별, 주차 별 등등. (~별)

     

    select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명

    group by 범주별로 세어주고 싶은 필드명;

     

    select * from users    -> user 의 각 name별로 정리됨.

    group by name*

     

     

    select name, count (*) from users     -> name별로 각각의 숫자가 정리됨.

    group by name

     

     

    select * from checkins     -> checkins 의 각 week(주차)별로 정리됨.

    group by week

     

    select week, count(*) from checkins    ->주차 (week)별로 각각의 숫자가 정리

    group by week

     

     

    최솟값 min,   최댓값 max,   평균값 avg,   합계 sum

     

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

     

     

    select week, min(likes) from checkins   -> 주차별로 likes를 받은 최솟값

    group by week

     

    select week, max(likes) from checkins    -> 주차별로 likes를 받은 최댓값

    group by week

     

    select week, avg(likes) from checkins    -> 평균값

    group by week

     

    select week, round(avg(likes),2) from checkins  -> 평균값은 소수점이 너무 길어지므로, 소수점2번째자리까지 표

    group by week

     

    select week, sum(likes) from checkins    -> 주차별 likes의 총 합계

    group by week

     

    2. 깔끔하게 데이터를 정렬해보자: Order by

     

    select * from 테이블명 order by 정렬의 기준이 될 필드명;

     

    select name, count(*) from users

    group by name

     

     

    select name, count(*) from users    ->  밑에 order by 쓰면 순서대로 정렬 (오름차순)

    group by name

    order by count(*)

     

    select name, count(*) from users    ->  숫자 내림차순 정렬

    group by name

    order by count(*) desc

     

    select payment_method, count(*) from orders   -> 결제수단별 숫자

    group by payment_method

     

     

    select payment_method, count(*) from orders    -> 웹개발종합반에서의 결제수단별 숫자

    where course_title = '웹개발 종합반'

    group by payment_method

     

     

    select payment_method, count(*) from orders   ->  오름차순 정렬

    where course_title = '웹개발 종합반'

    group by payment_method

    order by count(*)

     

     

     

    select * from users   -> 이메일 abc순 정렬

    order by email

     

    select * from users

    order by created_at

     

    [퀴즈] 1. 앱개발 종합반의 결제수단별 주문건수 세어보기
    [퀴즈] 2. Gmail 을 사용하는 성씨별 회원수 세어보기
    [퀴즈] 3. course_id별 '오늘의 다짐'에 달린 평균 like 개수 구해보기

     

    1. select payment_method, count(*) from orders

    where course_title = '앱개발 종합반'

    group by payment_method

     

    2.  select name, count(*) from users

    where email like '%gmail.com'

    group by name

     

    3.  select course_id, avg(likes) from checkins

    order by course_id

     

    별칭 기능: Alias

    쿼리가 점점 길어지면서 종종 헷갈리는 일이 생길 수 있습니다. 그래서 SQL은 Alias라는 별칭 기능을 지원합니다.

     

    select * from orders o                    -> o라는 별칭 사용

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

     

    또는,

     

    select payment_method, count(*) as cnt from orders o   -> as를 붙여서 별칭 cnt를만

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

    group by payment_method

     

     

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

     

    select payment_method, count(*) from orders

    where email like '%naver.com' and course_title = '앱개발 종합반'

    group by payment_method

     

    'SQL' 카테고리의 다른 글

    SQL 기본  (0) 2023.05.16
    SQL 4주차(2)  (0) 2023.05.08
    SQL 4주차(1)  (0) 2023.05.08
    SQL 3주차  (0) 2023.05.07
    SQL 1주차  (0) 2023.05.06

    댓글

Designed by Tistory.