Blog

[MySQL]04 select문에서 group by, order by 활용

Author
Summary
~별로 구분에서 활용
Category
Study
Tags
Database
Favorite
Memory Date
2023/08/04
Cross Reference Study
Related Media
Related Thought
Related Lessons
tag
날짜
작성자
진행상황
진행 전
태그구분
6 more properties

group by, order by, min, max, sum, count

다양한 실습을 통해서 group by, order by와 함께 min, max, sum의 기능, 또한 이전에 실습한 count를 활용해서 원하는 데이터들을 필터링 하는 것을 연습했다.
group by는 특히 "~~별로 구분하세요."와 같이 어떤 기준점을 삼으라는 것에 집중해야 했다. 특히 문제들을 풀면서 국어가 더 어렵구나라는 것을 느꼈다. 이것도 코딩테스트와 같이 뭔가 요령과 나만의 틀을 구성해서 문제를 빠르게 파악하면 적응 될 것 같았다.
order by는 어떤 컬럼 또는 데이터를 정렬 할 지 기준을 잘 적어야 한다.

1. 연습

#column의 갯수 얻기 select * from orders; select COUNT(*) from orders where course_title = '웹개발 종합반'; ##Group By 써보기 select name, COUNT(*) from users group by name; #Group By는 "~ 별로 구분해라."라는 말로 해석하면 좋다. ##Order By 써보기 ##Order By는 내림차순(desc==default), 오름차순(asc)으로 재정렬 할 수 있다. select name, COUNT(*) from users group by name ORDER by name; #users 테이블에서 '신' 씨를 가진 데이터만 불러와서 개수 살펴보기 select name, COUNT(*) from users where name like '신__' group by name; #주차별 '오늘의 다짐' 개수 구하기 select * from checkins; select week as 'n주차', COUNT(*) as '오늘의 다짐 갯수' from checkins group by week; #주차별 '오늘의 다짐'의 좋아요 최솟값 구하기 select * from checkins; select week 'n주차', MIN(likes) '좋아요' from checkins group by week; #주차별 '오늘의 다짐'의 좋아요 최댓값 구하기 select * from checkins; select week 'n주차', MAX(likes) '좋아요' from checkins group by week ################### order by max(likes) desc; ####select 구문의 처리 순서 ####FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY #주차별 '오늘의 다짐'의 좋아요 평균값 구하기 select * from checkins; select week, avg(likes) from checkins group by week; #주차별 '오늘의 다짐'의 좋아요 합계 구하기 select * from checkins; select week, SUM(likes) from checkins group by week order by sum(likes) asc; #like를 많이 받은 순서대로 '오늘의 다짐'을 출력 select * from checkins; select comment, likes from checkins order by likes desc; #웹개발 종합반의 결제수단별 주문건수 세어보기 show tables; select * from orders; select payment_method ,count(payment_method) from orders o where course_title = '웹개발 종합반' group by payment_method order by COUNT(payment_method) DESC; #문자열을 기준으로 정렬해보기 select * from users; select * from users order by email; #시간을 기준으로 정렬해보기 select * from users; select * from users order by created_at desc; #앱개발 종합반의 결제수단별 주문건수 세어보기 select * from orders; select payment_method ,COUNT(payment_method) from orders group by payment_method order by COUNT(payment_method) desc; #[퀴즈] Gmail 을 사용하는 성씨별 회원수 세어보기 select * from users; select name, COUNT(name) 'Gmail 사용자' from users where email like '%gmail%' group by name; #course_id별 '오늘의 다짐'에 달린 평균 like 개수 구해보기 select * from checkins; select course_id, avg(likes) from checkins GROUP BY course_id; #네이버 이메일을 사용하여 앱개발 종합반을 신청한 주문의 결제수단별 주문건수 세어보기 select * from orders; select payment_method, count(payment_method) from orders where email like '%@naver.com' group by payment_method; #group by, count, like %, order by asc&desc, min, max, sum
SQL
복사