Burninghering's Blog
article thumbnail
Published 2021. 10. 27. 00:38
211026TIL_SQL 3주차 Today I Learned

Group by : 동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것

 

"~별로" 라는 말이 나오면 무조건 group by!

묶은 것과, 묶은 것 당의 카운트를 보여줘!

select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명 #중간 부분을 2번째에 써줌
group by 범주별로 세어주고 싶은 필드명; #1번째로 쓰고

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

 

 

Order by : 정렬하기

select name, count(*) from users
group by name
order by count(*) desc;
더보기

위 쿼리가 실행되는 순서: from → group by → select → order by

  1. from users: users 테이블 데이터 전체를 가져옵니다.
  2. group by name: users 테이블 데이터에서 같은 name을 갖는 데이터를 합쳐줍니다.
  3. select name, count(*): name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어줍니다.

 

아래 코드가 실행되는 순서

from -> where -> group by -> select -> order by

SELECT payment_method,count(*) from orders o 
where course_title ='웹개발 종합반'
group by payment_method 
order by count(*)

 


join : 두 테이블의 공통된 정보 (key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보는 것

 

1.left join

A와 B는 각각 테이블

 

2. Inner join

 

 

쿼리 실행 순서

from → join → select

SELECT * from enrolleds e 
inner join courses c 
on e.course_id =c.course_id

 

 

중요한 문제!

7월10일 ~ 7월19일에 가입한 고객 중, 포인트를 가진 고객의 숫자, 그리고 전체 숫자, 그리고 비율을 보고 싶어요!

select count(pu.point_user_id) as pnt_user_cnt,
	   count(u.user_id) as tot_user_cnt, 
	   round(count(pu.point_user_id)/count(u.user_id),2) as ratio
	   from users u	   
left join point_users pu on u.user_id =pu.user_id 
where u.created_at BETWEEN '2020-07-10' and '2020-07-20'

 

-union : 결과물 합치기

 

profile

Burninghering's Blog

@개발자 김혜린

안녕하세요! 반갑습니다.