새소식

언어

MYSQL 공부하기

  • -

 

GROUP BY 

 

https://school.programmers.co.kr/learn/courses/30/lessons/144855#qna

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2개의 테이블이 있고 BOOK_ID가 공통 컬럼임 

 

문제

2022년 1월의 카테고리 별 도서 판매량을 합산하고, 카테고리(CATEGORY), 총 판매량(TOTAL_SALES) 리스트를 출력하는 SQL문을 작성해주세요.
결과는 카테고리명을 기준으로 오름차순 정렬해주세요.

 

1. BOOK 테이블과 BOOK_SALES 테이블 JOIN 하기 

2. 2022년 1월인 SALES_DATE만 뽑는 조건문 

3. CATEGORY별 도서 판매량 합산하고

4. 이를 TOTAL_SALES 컬럼명으로 오름차순 정렬하기 

-- 코드를 입력하세요
SELECT CATEGORY, SUM(SALES) as TOTAL_SALES
FROM BOOK join BOOK_SALES using(BOOK_ID)
WHERE SALES_DATE like "2022-01%"
GROUP BY CATEGORY
ORDER BY CATEGORY

 

코드 설명 

CATEGORY와 SALES 합계를 SELECT 

BOOK 테이블과 BOOK_SALES를 BOOK_ID 기준으로 JOIN

SALES_DATE를 2022년1월인 것들만 확인하고 

CATEGORY로 GROUP BY하고 

ORDER BY로 오름차순 정렬하기 

 

https://school.programmers.co.kr/learn/courses/30/lessons/59041

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.

 

1. 이름을 세야하니깐 COUNT(NAME)으로 AS 'COUNT'

2. NAME이 NULL이 아니어야함

3. GROUP BY로 NAME을 할것 

4. GROUP BY 하였으니 조건문으로 HAVING을 사용하여 두번 이상 쓰인 이름을 카운트할 것 

5. NAME 순으로 정렬할 것 

-- 코드를 입력하세요
SELECT NAME, COUNT(NAME) AS 'COUNT'
FROM ANIMAL_INS
WHERE NAME is not null 
GROUP BY NAME
HAVING COUNT(*) >= 2
ORDER BY NAME;

 

JOIN

문제

USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. 결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 이때, 성별 정보가 없는 경우 결과에서 제외해주세요.

 

-- 코드를 입력하세요
SELECT
    YEAR(S.SALES_DATE) AS YEAR,          -- ONLINE_SALE의 YEAR가 필요함
    MONTH(S.SALES_DATE) AS MONTH,        -- ONLINE_SALE의 MONTH가 필요함
    I.GENDER,                            -- USER_INFO의 GENDER가 필요함 
    COUNT(DISTINCT S.USER_ID) AS USERS   -- USER_ID가 중복되지 않게 COUNT를 해서 USERS로 컬럼 만듬
FROM USER_INFO I
JOIN ONLINE_SALE S 
ON I.USER_ID = S.USER_ID                -- 이거 기준으로 통합
WHERE I.GENDER IS NOT NULL              -- 성별 정보가 없는 경우는 결과에서 제외해달라고 함 
GROUP BY YEAR, MONTH, I.GENDER          -- 년, 월, 성별 별로 상품을 구매한 회원수를 집계
ORDER BY YEAR, MONTH, I.GENDER;         -- 결과는 년, 월, 성별을 기준으로 오름차순 정렬

'언어' 카테고리의 다른 글

파이썬 함수 데코레이터  (1) 2024.10.03
SQL 기초 문법  (0) 2024.08.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.