728x90
https://school.programmers.co.kr/learn/courses/30/lessons/144855
두 테이블에서 각각 요소를 가져와야할 경우의 문제이다. 먼저 SQL의 처리 순서를 기억하자
- FROM: 데이터를 조회할 테이블이나 뷰를 결정하고, 필요하면 조인(join)이나 서브쿼리를 통해 데이터를 결합합니다.
- WHERE: 필터링 작업이 이 단계에서 이루어집니다. 주어진 조건에 맞는 행만을 선택합니다.
- GROUP BY: 데이터가 그룹화되는 단계입니다. 같은 값을 가진 행들을 그룹으로 묶습니다.
- HAVING: GROUP BY 이후에 그룹화된 데이터에 대한 필터링을 적용합니다. WHERE와는 다르게 그룹화된 데이터에 조건을 설정할 수 있습니다.
- SELECT: 필요한 열(column)과 계산된 값을 선택하여 출력합니다.
- DISTINCT: 중복된 결과를 제거합니다.
- ORDER BY: 결과를 정렬합니다. 기본값은 오름차순(ASC)이지만 내림차순(DESC)도 가능합니다.
- LIMIT/OFFSET: 반환할 행의 수를 제한합니다. (특정 데이터베이스에서는 TOP이나 FETCH를 사용하기도 합니다.)
고마워 챗지피티야!
그래서 이 문제의 경우 두 BOOK_ID가 같은 경우를 먼저 JOIN 하고 특정 날짜의 데이터만 존재하는 테이블로 처리해둔다. 그 다음 원하는 데이터를 그룹화하도록 한다. 여기선 카테고리별로 그룹화한다. 이제 그룹 함수들을 사용해 필요한 정보를 가져오면 된다.
SELECT CATEGORY, SUM(SALES) AS TOTAL_SALES FROM BOOK, BOOK_SALES
WHERE BOOK.BOOK_ID = BOOK_SALES.BOOK_ID
AND BOOK_SALES.SALES_DATE BETWEEN '2022-01-01' and '2022-01-31'
GROUP BY BOOK.CATEGORY
ORDER BY BOOK.CATEGORY;
'프로그래머스 풀이 > Lv 3' 카테고리의 다른 글
프로그래머스 - 기지국 설치(C++) (0) | 2024.09.28 |
---|---|
프래그래머스 - 오랜 기간 보호한 동물(1)(SQL) (0) | 2024.09.28 |
조건별로 분류하여 주문상태 출력하기 - SQL (0) | 2024.09.28 |
프로그래머스 - 파괴되지 않은 건물(C++, 누적합 응용) (0) | 2024.06.29 |
프로그래머스 - N으로 표현 (C++) (1) | 2024.04.04 |