SQL #2

김성훈·2022년 12월 14일
0

SQL

목록 보기
2/3
post-thumbnail

(1) show tables로 어떤 테이블이 있는지 살펴보기
(2) 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 limit 10 쿼리 날려보기
(3) 원하는 정보가 없으면 다른 테이블에도 (2)를 해보기
(4) 테이블을 찾았다! 범주를 나눠서 보고싶은 필드를 찾기
(5) 범주별로 통계를 보고싶은 필드를 찾기
(6) SQL 쿼리 작성하기!

Group by

  • 성씨별로 몇 명의 회원이 있는지 알아보자
SELECT * from users ------ 1
group by name ---------- 2

# name으로 묶은 것을 카운트해줘라 
# 역순으로 돌아가서 select 수정 !
SELECT name, COUNT(*)  from users
group by name
  • 사용할 테이블 보기 ( Limit )
SELECT * FROM checkins limit 10

  • 주차별 '오늘의 다짐' 개수 구하기
SELECT week ,COUNT(*)  FROM checkins
group by week 

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

  • 주차별 '오늘의 다짐'의 좋아요 최솟값 구하기
SELECT week , MIN(likes)  from checkins 
group by week ;
  • 주차별 '오늘의 다짐'의 좋아요 최댓값 구하기
SELECT week , MAX(likes)  from checkins 
group by week ;
  • 주차별 '오늘의 다짐'의 좋아요 평균값 구하기
SELECT week , AVG(likes)  from checkins 
group by week ;
  • 주차별 '오늘의 다짐'의 좋아요 합계 구하기
SELECT week , SUM(likes)  from checkins 
group by week ;

Order by

SELECT name, COUNT(*)  from users
group by name

위와 같이 쿼리문을 작성했을 때, 아래와 같이 count 별로 나열 되어있는 것을 확인할 수 있다.

정렬을 내림차순, 오름차순 등으로 하고 싶을 떄 쓰는 Order by 를 써주면 된다.

SELECT name, COUNT(*)  from users
group by name
order by COUNT(*) ;

내림차순 : desc

SELECT name, COUNT(*)  from users
group by name
order by COUNT(*) desc;

오름차순 : asc, 안 써도 된다.

SELECT name, COUNT(*)  from users
group by name
order by COUNT(*) asc;

정렬할 때, 꼭 group by를 쓸 필요는 없다.

SELECT * from checkins
order by likes desc;

Order by는 모든 SQL 쿼리에 적용될 수 있는 기능이다.

Where 와 함께 사용하기

Where절로 조건이 하나 추가되고, 그 이후에 Group by, Order by가 실행되는 것으로 여긴다.

  • 웹개발 종합반의 결제수단별 주문건수 세어보기
# 순서 1
SELECT course_title ,payment_method, COUNT(*)  FROM orders
WHERE course_title = '웹개발 종합반'
# 순서 2
group by payment_method 
order by COUNT(*)  # 오름차순 정렬

Group by, Order by 같이 사용해보기

Order by 연습

  • 문자열을 기준으로 정렬
SELECT * FROM users
order by email desc;

SELECT * FROM users
order by name desc;
  • 시간을 기준으로 정렬
SELECT * from users
order by created_at desc

Group by 연습

(1) 원하는 테이블
(2) 범주로 사용할 필드
(3) 범주에 따라 통계를 계산하고 싶은 필드 (개수의 경우 제외)
이 세 가지만 기억 !

  • 앱개발 종합반의 결제수단별 주문건수 세어보기
SELECT payment_method, COUNT(*) FROM orders 
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

별칭 기능: Alias

쿼리가 점점 길어지면서 종종 헷갈리는 일이 생길 수 있습니다. 그래서 SQL은 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

Project

  • 네이버 이메일을 사용하여 앱개발 종합반을 신청한 주문의 결제수단별 주문건수 세어보기
SELECT course_title as 과목명, payment_method as 결제방식, 
COUNT(*) as 합계  from orders
WHERE email LIKE '%naver.com' and course_title LIKE '앱개발%'
group by payment_method;
profile
I wanna be your good partner

0개의 댓글