Search

10_GROUP_BY.sql

GROUP BY

HAVING

String[][] memberList = { {"1", "qwer", "1234", "홍길동", "m", "0", "2021-01-01 12:11:30"}, {"2", "java", "1234", "김유신", "m", "0", "2021-01-02 03:20:54"}, {"3", "haha", "1234", "신혜정", "w", "0", "2021-01-01 12:11:30"}, {"4", "tiger", "1234", "선우호랭", "w", "0", "2020-12-25 05:43:11"}, {"5", "green", "1234", "홍길동", "m", "0", "2018-06-12 07:21:08"}, }; // [문제] 남자 회원과 여자 회원 수를 각각 구하시오. // [정답] 남자 회원(3명), 여자 회원(2명)
Java
복사
USE db1_book_store; SHOW TABLES; DESC book; DESC cart; DESC member; SELECT * FROM book; SELECT * FROM cart; SELECT * FROM member; # GROUP BY -- 그룹 함수와 함께 사용한다. -- GROYP BY 될 때에 내부적으로 임시 테이블을 만든다. -- 이때 임시 테이블의 컬럼은 GROUP BY에 작성한 컬럼과 -- SELECT에서 사용한 그룹함수가 된다. # [문제] member테이블에서 회원의 수를 성별로 가져오기 SELECT member_gender, COUNT(*) FROM member; -- 잘못된 결과 출력 SELECT member_gender, COUNT(*) FROM member GROUP BY member_gender; # [문제] book테이블에서 도서 종류별 도서 수량 가져오기 SELECT book_kind, COUNT(*) FROM book GROUP BY book_kind; # [문제] cart테이블에서 회원별로 구입한 총 수량 가져오기 # [조건] 내림차순 정렬하기 SELECT buyer, SUM(buy_count) FROM cart GROUP BY buyer ORDER BY SUM(buy_count) DESC; #----------------------------------------------------------------------- # HAVING -- GROUP BY로 만든 테이블에서는 조건을 HAVING을 사용한다. # [문제] cart테이블에서 회원이 구입한 도서의 수량이 2개 이상인 회원의 id 가져오기 DESC cart; SELECT buyer, SUM(buy_count) FROM cart GROUP BY buyer; SELECT buyer, SUM(buy_count) FROM cart GROUP BY buyer HAVING SUM(buy_count) >= 2; # [문제] book테이블에서 2015년에서 2019년 사이에 출간한 도서 중에 # 재고 수량이 3개 이하인 도서를 종류별 개수 가져오기 SELECT COUNT(*) FROM book WHERE '2015-01-01' <= book_publishing_date AND book_publishing_date < '2020-01-01'; SELECT book_kind, COUNT(*) FROM book WHERE '2015-01-01' <= book_publishing_date AND book_publishing_date < '2020-01-01' GROUP BY book_kind; SELECT book_kind, COUNT(*) FROM book WHERE '2015-01-01' <= book_publishing_date AND book_publishing_date < '2020-01-01' AND book_count <= 3 GROUP BY book_kind;
SQL
복사
# [문제] member테이블에서 회원의 수를 성별로 가져오기 # [문제] book테이블에서 도서 종류별 도서 수량 가져오기 # [문제] cart테이블에서 회원별로 구입한 총 수량 가져오기 # [조건] 내림차순 정렬하기 #----------------------------------------------------------------------- # [문제] cart테이블에서 회원이 구입한 도서의 수량이 2개 이상인 회원의 id 가져오기 # [문제] book테이블에서 2015년에서 2019년 사이에 출간한 도서 중에 # 재고 수량이 3개 이하인 도서를 종류별 개수 가져오기
SQL
복사