꾸양!
일단 시작.
꾸양!
💁‍♀️ 깃허브 링크
전체 방문자
오늘
어제
  • 분류 전체보기 (112)
    • STUDY (85)
      • JAVA (36)
      • Algorithm (1)
      • SpringBoot (9)
      • SQL (4)
      • GIT (16)
      • Front (1)
      • JPA (9)
      • Trouble Shooting (9)
    • SPARTA Project (26)
      • WIL (14)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 트러블슈팅
  • 인프런
  • 클린코드
  • 프로그래머스
  • 코드효율성
  • 잔디돌려줘
  • 숫자짝꿍
  • intellij
  • Repository
  • 인프콘2024
  • 랠릿

최근 댓글

최근 글

hELLO · Designed By 정상우.
꾸양!

일단 시작.

STUDY/SQL

스파르타 코딩클럽 <엑셀보다 쉬운 SQL> 2주차 문법 정리

2023. 5. 13. 21:22

배울 것!

* 통계 : 최대 / 최소 / 평균 / 갯수
가장 많은 like를 받은 사람의 이름, 전체 신청자 수, 평균 연령 등 : 의미있는 정보
더 나아가면? '범주(category)' 각각의 정보가 궁금할 수 있다.
ex. 과목별 신청자 평균 연령, 과목별 신청자 수, 성씨별 회원수
* 통계 구하기 : 기존 방법의 한계
* 동일한 범주의 데이터를 묶어주는 Group by
* 깔끔하게 데이터를 정렬해보자 : Order by


쿼리가 실행되는 순서

성씨별로 몇 명의 회원이 있는지
SELECT name, COUNT(*)  FROM users u 
group by name 

from users : users 데이터를 가져온다.
group by name : 테이블 데이터에서 같은 name을 갖는 데이터를 합친다.
select name, count(*) : name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어준다.


group by

1. checkins에서 주차별로 comment 개수 구하기
SELECT week, count(*) FROM checkins c
group by week 

2. 오늘의 다짐의 주차별로 like 최소값!
SELECT week, min(likes) FROM checkins c
group by week 

3. 최대값
SELECT week, max(likes) FROM  checkins c
group by week 

4. 평균
SELECT week, avg(likes) FROM checkins c
group by week 

5. 평균을 보여주는데 반올림을 2째 자리까지 해줘.
SELECT week, round(avg(likes),2) FROM checkins c
group by week 

6. 합
SELECT week, sum(likes) FROM checkins c
group by week 


order by

보통 데이터를 구한 뒤, 마지막에 정렬하므로 마지막에 써준다.

* 오름차순 정렬
select name, count(*) from users
group by name
order by count(*)

* 내림차순 정렬
select name, count(*) fromusers
group by name
order by  count(*) desc

* group by와 같이 쓰이지 않을 때
select * from checkins c 
order by likes desc

실행 순서 잘 생각하기!

* order by는 문자열도 가능하다. 영어, 한글


많이 겪는 오류(지만 오류라고 뜨지는 않는다.)

select * from orders
group by payment_method

위 코드를 실행시키면 뭔가 이상하게 나온다. 왜? 뭘 기준으로 통계를 낼 건지 말해주지 않았다.
그래서 payment_method에서 대표되는? 애들만 뽑아서 다 보여준다.

select count(*) from orders
group by payment_method

라고 실행시키면 숫자만 나온다.


Practice

1. 앱개발 종합반의 결제수단별 주문건수
select payment_method , count(*) from orders o 
WHERE course_title = '앱개발 종합반'
group by payment_method 

2. gmail을 사용하는 성씨별 회원수 세어보기
select name, COUNT(*)  from users u 
WHERE email like '%@gmail.com'
group by name 

3. course_id별 '오늘의 다짐'에 달린 평균 like 갯수 구해보기
select course_id , avg(likes) from checkins c 
group by course_id 


별칭 기능 : 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

저작자표시 (새창열림)

'STUDY > SQL' 카테고리의 다른 글

스파르타 코딩클럽 <엑셀보다 쉬운 SQL> 4주차 문법 정리  (0) 2023.05.13
스파르타 코딩클럽 <엑셀보다 쉬운 SQL> 3주차 문법 정리  (0) 2023.05.13
스파르타 코딩클럽 <엑셀보다 쉬운 SQL> 1주차 문법 정리  (0) 2023.05.13
    'STUDY/SQL' 카테고리의 다른 글
    • 스파르타 코딩클럽 <엑셀보다 쉬운 SQL> 4주차 문법 정리
    • 스파르타 코딩클럽 <엑셀보다 쉬운 SQL> 3주차 문법 정리
    • 스파르타 코딩클럽 <엑셀보다 쉬운 SQL> 1주차 문법 정리
    꾸양!
    꾸양!
    차근차근 한 발자국씩.

    티스토리툴바