[MySQL] 프로그래머스 문제 연습 11

Lake·2024년 5월 2일
0

SQL 문제

목록 보기
14/36
post-thumbnail

없어진 기록 찾기 (JOIN)

  • 천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.

제출한 쿼리 :

SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_OUTS O
LEFT JOIN ANIMAL_INS I
ON O.ANIMAL_ID = I.ANIMAL_ID
WHERE I.ANIMAL_ID IS NULL
ORDER BY O.ANIMAL_ID;

"ANIMAL_OUTS"에는 있지만 "ANIMAL_INS"에는 없는 동물의 정보를 가져와야 하기 때문에 ANIMAL_OUTS 테이블을 기준으로 LEFT JOIN을 수행해야 한다.
반대로 ANIMAL_INS 테이블을 기준으로 조인하게 될 경우 보호소에 들어온 동물 중 입양되지 않은 동물의 정보를 반환하게 된다.


과일로 만든 아이스크림 고르기 (SELECT)

  • 상반기 아이스크림 총주문량이 3,000보다 높으면서 아이스크림의 주 성분이 과일인 아이스크림의 맛을 총주문량이 큰 순서대로 조회하는 SQL 문을 작성해주세요.

제출한 쿼리 :

SELECT H.FLAVOR
FROM FIRST_HALF AS H
INNER JOIN ICECREAM_INFO AS I
ON H.FLAVOR = I.FLAVOR
WHERE I.INGREDIENT_TYPE = 'fruit_based'
    AND H.TOTAL_ORDER > 3000; 

재구매가 일어난 상품과 회원 리스트 구하기 (SELECT)

  • ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬해주세요.

제출한 쿼리 :

SELECT USER_ID
       , PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(USER_ID) > 1
ORDER BY USER_ID ASC, PRODUCT_ID DESC;

최댓값 구하기 (SUM, MIN, MAX)

  • 가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

제출한 쿼리 :

SELECT MAX(DATETIME)
FROM ANIMAL_INS;

조건에 맞는 사용자 정보 출력하기 (STRING ,DATE)

  • USED_GOODS_BOARDUSED_GOODS_USER 테이블에서 중고 거래 게시물을 3건 이상 등록한 사용자의 사용자 ID, 닉네임, 전체주소, 전화번호를 조회하는 SQL문을 작성해주세요. 이때, 전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력되도록 해주시고, 전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 하이픈 문자열(-)을 삽입하여 출력해주세요. 결과는 회원 ID를 기준으로 내림차순 정렬해주세요.

제출한 쿼리 :

SELECT U.USER_ID
       , U.NICKNAME
       , CONCAT(U.CITY, ' ', U.STREET_ADDRESS1, ' ', U.STREET_ADDRESS2) AS 전체주소
       , CONCAT(SUBSTR(U.TLNO, 1, 3), '-', SUBSTR(U.TLNO, 4, 4), '-', SUBSTR(U.TLNO, 8, 4)) AS 전화번호
FROM USED_GOODS_USER AS U
INNER JOIN USED_GOODS_BOARD AS B
ON U.USER_ID = B.WRITER_ID
GROUP BY U.USER_ID, U.NICKNAME, U.CITY, U.STREET_ADDRESS1, U.STREET_ADDRESS2, U.TLNO
HAVING COUNT(U.USER_ID) >= 3
ORDER BY U.USER_ID DESC;

오늘의 TMI

새로산 키보드 후기 : 마음에 듦!! 되게 살짝만 건드려도 타자 쳐지는게 너무 신기하다...

0개의 댓글