65. 우유와 요거트가 담긴 장바구니
문제 링크:
정답 코드: https://school.programmers.co.kr/learn/courses/30/lessons/62284
SELECT a.CART_ID
FROM CART_PRODUCTS a
INNER JOIN CART_PRODUCTS b
ON a.CART_ID = b.CART_ID
WHERE a.NAME = 'Milk' AND b.NAME = 'Yogurt'
GROUP BY a.CART_ID
ORDER BY CART_ID ASC
문제 풀이때 했던 생각.
| # 우유와 요거트를 동시에 구입한 장바구니 # 아이디를 조회 # 결과는 장바구니의 아이디 순 CART_ID 행 하나에 주문데이터가 모두 담겨져 있는것이 아니기 때문에 GROUP BY로 그룹으로 만듬 # 다양한 풀이방법이 존재하니 하나씩 시도해볼것 |
66. 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/164671
정답 코드:
SELECT CONCAT("/home/grep/src/", b.BOARD_ID,"/",f.FILE_ID,f.FILE_NAME,f.FILE_EXT) AS FILE_PATH
FROM USED_GOODS_BOARD b
INNER JOIN USED_GOODS_FILE f
ON b.BOARD_ID = f.BOARD_ID
WHERE b.VIEWS = (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD )
ORDER BY FILE_ID DESC
문제 풀이때 했던 생각.
| # 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회 # 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분 # 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력 # 조회수가 가장 높은 게시물은 하나만 존재한다. # 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬 만약 LIMIT을 사용해 가장 높은 조회수의 게시물을 찾을 경우 해당 게시물에 있는 또 다른 파일도 제거를 하기 때문에 사용하면 안된다, |
67. 주문량이 많은 아이스크림들 조회하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/133027
정답 코드:
WITH J AS
( SELECT FLAVOR,
SUM(TOTAL_ORDER) AS TOTAL_ORDER
FROM JULY
GROUP BY FLAVOR) # 7월 주문량 합산
SELECT F.FLAVOR
FROM FIRST_HALF F
LEFT JOIN J
ON F.FLAVOR = J.FLAVOR
ORDER BY (F.TOTAL_ORDER + IFNULL(J.TOTAL_ORDER, 0)) DESC
LIMIT 3
문제 풀이때 했던 생각.
| # 7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더한 값 # 큰 순서대로 상위 3개의 맛 7월 주문량을 먼저 합산 한뒤 JOIN, 총 주문량을 구해야 하기 때문에 LEFT JOIN 상반기엔 판매되었으니 7월엔 판매가 안된 제품이 있을수 있기 때문에 IFNULL을 사용해 NULL을 0으로 치환 |
'E.코드카타 > Level 4' 카테고리의 다른 글
| 코드카타 Level.4 62~64 (0) | 2026.01.14 |
|---|---|
| 코드카타 Level.4 59~61 (0) | 2026.01.13 |
| 코드카타 Level.4 55, 57, 58 (반드시 되돌아 볼것) (0) | 2026.01.12 |
| 코드카타 Level.4 51~53 (다음에 서브쿼리로 풀어보기) (1) | 2026.01.11 |
