SQL
[22.02.11] SQL - order by, group by(2주차)
Tite
2022. 2. 11. 12:17
Group by : 동일한 범주의 데이터를 묶어줌
같은 성씨의 데이터를 하나로 묶고, 각 성씨의 회원수를 구할 수 있다.
문제의 '~별로' 가 있다면 group by 라고 생각하면 된다.
Order by : 깔끔하게 데이터를 오름차, 내림차로 정렬할 수 있음
order by를 이용한 정렬은 맨 마지막에 한다.
기본적으로 order by 뒤에 아무것도 적지 않는다면 오름차순으로 정리된다.
order by 뒤에 desc를 넣으면 내림차 순으로 정리된다.
숫자 뿐만 아니라 문자열, 알파벳, 한글, 시간으로도 잘 정렬이 된다.
min(필드명)
: 동일한 범주에서 최솟값 구하기
예시) 주차별 '오늘의 다짐'의 좋아요 최솟값 구하기
SELECT week, min(likes) from checkins
group by week;
max(필드명)
: 동일한 범주에서 최댓값 구하기
예시) 주차별 '오늘의 다짐'의 좋아요 최댓값 구하기
SELECT week, max(likes) from checkins
group by week;
avg(필드명)
: 동일한 범주의 평균 구하기
예시) 주차별 '오늘의 다짐'의 좋아요 평균값 구하기
SELECT week, avg(likes) from checkins
group by week
sum(필드명)
: 동일한 범주의 합계 구하기
예시) 주차별 '오늘의 다짐' 좋아요 합계 구하기
SELECT week, sum(likes) from checkins
group by week
[문제] 앱개발 종합반의 결제수단별 주문건수 세어보기
내가 쓴 쿼리 = 정답 쿼리
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 , round(avg(likes),1) FROM checkins
group by course_id;
쿼리를 이렇게 정리하면 편하다!
(1) show tables로 어떤 테이블이 있는 지 살펴보기 (2) 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 limit 10 쿼리 해 보기 (3) 원하는 정보가 없으면 다른 테이블에도 (2) 해 보기 (4) 테이블을 찾았으면 범주를 나눠서 보고싶은 필드를 찾기 (5) 범주별로 통계를 보고싶은 필드를 찾기 (6) SQL 쿼리 작성하기 |
[숙제] 네이버 이메일을 사용하여 '앱개발 종합반'을 신청한 주문의 결제수단별 주문건수 세어보기
내가 쓴 쿼리 = 정답 쿼리
SELECT payment_method, count(*) from orders
WHERE email LIKE '%naver.com' and course_title = '앱개발 종합반'
group by payment_method;