본문 바로가기
SQL

프로그래머스 SQL 고득점 Kit - SELECT[1]

by 오리파 2026. 2. 3.

1. 강원도에 위치한 생산공장 목록 출력하기

- 특정 문자열이 들어갔는지 아닌지 조건 걸기 -> WHERE ~ LIKE ~ 활용

SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '%강원도%'
ORDER BY FACTORY_ID;

 

 

2. 서울에 위치한 식당 목록 출력하기

- 특정 그룹별로 평균 점수 출력하기 -> AVG(컬럼명) OVER (PARTITION BY 그룹지을 기준 컬럼명)

-- 1.PARTITION BY 과 DISTINCT 활용하는 방법
SELECT DISTINCT REST_ID, AVG(REVIEW_SCORE) OVER (PARTITION BY REST_ID) AS AVG_SCORE
FROM REST_REVIEW
ORDER BY REST_ID;

-- 2.GROUP BY 활용하는 방법
SELECT REST_ID, AVG(REVIEW_SCORE) AS AVG_SCORE
FROM REST_REVIEW
GROUP BY REST_ID
ORDER BY REST_ID;
SELECT REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, SCORE
FROM REST_INFO a
    JOIN 
(SELECT REST_ID, ROUND(AVG(REVIEW_SCORE),2) AS SCORE
    FROM REST_REVIEW
GROUP BY REST_ID ORDER BY REST_ID) b USING (REST_ID)
WHERE ADDRESS LIKE '서울%' 
ORDER BY SCORE DESC, FAVORITES DESC;

 

 

3. 조건에 부합하는 중고거래 댓글 조회하기

SELECT a.TITLE, a.BOARD_ID, b.REPLY_ID, b.WRITER_ID, b.CONTENTS, DATE_FORMAT(b.CREATED_DATE,'%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD a INNER JOIN USED_GOODS_REPLY b USING(BOARD_ID)
WHERE a.CREATED_DATE >= '2022-10-01' AND a.CREATED_DATE <'2022-11-01'
ORDER BY b.CREATED_DATE, a.TITLE;

 

 

4. 재구매가 일어난 상품과 회원 리스트 구하기

SELECT a.USER_ID, a.PRODUCT_ID
FROM (
    SELECT *, COUNT(*) AS CNT
        FROM ONLINE_SALE
    GROUP BY USER_ID, PRODUCT_ID
    ORDER BY USER_ID, PRODUCT_ID DESC) a
WHERE a.CNT >1;

 

 

5. 모든 레코드 조회하기

SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID;

 

 

6. 역순 정렬하기

SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC;

 

 

7. 아픈 동물 찾기

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick'
ORDER BY ANIMAL_ID;

 

 

8. 어린 동물 찾기

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS
WHERE INTAKE_CONDITION <> 'Aged'
ORDER BY ANIMAL_ID;

 

 

9. 동물의 아이디와 이름

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS
ORDER BY ANIMAL_ID;