반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/164668
접근 방법
USED_GOODS_BOARD와 USED_GOODS_USER테이블을 엮고(?) 각 테이블에서 필요한 정보를 찾아내야 한다.
완료된 거래에 대해 조회하기 위해 STATUS칼럼이 'DONE'인 것으로 조건화를 해준다
HAVING에 TOTAL_SALES가 700000이상인 칼럼 조건화를 한번 더 해준다
# MYSQL
#SOL
SELECT USER_ID, NICKNAME, SUM(PRICE) AS TOTAL_SALES
FROM USED_GOODS_BOARD AS B, USED_GOODS_USER AS U
WHERE B.WRITER_ID = U.USER_ID AND STATUS = 'DONE'
GROUP BY USER_ID
HAVING TOTAL_SALES >= 700000
ORDER BY TOTAL_SALES
※참고
▷ 핵심
ON : JOIN 전에 조건을 필터링한다
WHERE : JOIN 후에 조건을 필터링한다
▶ 왜?
- INNER JOIN의 경우에는 둘다 차이가 없다
- OUTER JOIN의 경우 OUTER TABLE에 NULL값 포함하여 핻을이 모두 살아있기 때문에, ON으로 해야 원하는 값을 얻을 수 있다.
해당 문제의 경우 INNER JOIN을 사용하기 때문에, ON이나 WHERE 모두 차이가 없다!
반응형
'PS > SQL' 카테고리의 다른 글
[프로그래머스] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기(Feat.like연산자) (0) | 2024.06.04 |
---|---|
[프로그래머스] 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2024.05.03 |
[프로그래머스] 잡은 물고기의 평균 길이 구하기 (0) | 2024.04.16 |
[프로그래머스] 업그레이드 할 수 없는 아이템 구하기 (0) | 2024.04.16 |
[프로그래머스] ROOT 아이템 구하기 (0) | 2024.04.16 |