[SQL] 01. 프로그래머스 LV.1 문제 정답

2025. 7. 10. 21:24·프로그래밍 언어/02. SQL

💯 프로그래머스 SQL LV.1 정답

모든 레코드 조회하기

SELECT *
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

역순 정렬하기

SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC;

아픈 동물 찾기

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

어린 동물 찾기

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

동물의 아이디와 이름

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

여러 기준으로 정렬하기

SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME, DATETIME DESC;

상위 n개 레코드

SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME ASC
LIMIT 1;

이름이 없는 동물의 아이디

SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL;

이름이 있는 동물의 아이디

SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL;

NULL 처리하기

-- 첫번째 방법 IFNULL 사용하기
SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name') AS NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

-- 두번째 방법 CASE 사용하기
SELECT ANIMAL_TYPE,
        CASE
            WHEN NAME IS NULL THEN 'No name'
            ELSE NAME
        END AS NAME,
        SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC;

-- 세번째 방법 COALESCE 사용하기
SELECT ANIMAL_TYPE, COALESCE(NAME, 'No name') AS NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

최댓값 구하기

-- 첫번째 방법
SELECT DATETIME AS 시간
FROM ANIMAL_INS
ORDER BY DATETIME DESC
LIMIT 1;

-- 두번째 방법
SELECT MAX(DATETIME) AS 시간
FROM ANIMAL_INS;

최솟값 구하기

SELECT MIN(DATETIME) AS 시간
FROM ANIMAL_INS

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

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

경기도에 위치한 식품창고 목록 출력하기

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN, 'N') AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '경기도%'
ORDER BY WAREHOUSE_ID ASC;

가장 비싼 상품 구하기

SELECT MAX(PRICE) AS MAX_PRICE
FROM PRODUCT;

동물 수 구하기

SELECT COUNT(ANIMAL_ID) AS count
FROM ANIMAL_INS;

중복 제거하기

SELECT COUNT(DISTINCT(NAME)) AS count
FROM ANIMAL_INS;

조건에 맞는 회원수 구하기

SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO
WHERE YEAR(JOINED) = 2021 AND AGE BETWEEN 20 AND 29;

나이 정보가 없는 회원 수 구하기

SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO
WHERE AGE IS NULL;

12세 이하인 여자 환자 목록 출력하기

SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME ASC;

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

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

흉부외과 또는 일반외과 의사 목록 출력하기

SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME ASC;

인기있는 아이스크림

SELECT FLAVOR
FROM FIRST_HALF
ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID;

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

-- 첫번째 방법
SELECT F.FLAVOR
FROM FIRST_HALF F, ICECREAM_INFO T
WHERE F.FLAVOR = T.FLAVOR AND F.TOTAL_ORDER > 3000 AND T.INGREDIENT_TYPE = 'fruit_based'
ORDER BY F.TOTAL_ORDER DESC;

-- 두번째 방법
SELECT F.FLAVOR
FROM FIRST_HALF F JOIN ICECREAM_INFO I ON F.FLAVOR = I.FLAVOR
WHERE F.TOTAL_ORDER > 3000 AND I.INGREDIENT_TYPE = 'fruit_based'
ORDER BY F.TOTAL_ORDER DESC;

조건에 맞는 도서 리스트 출력하기

SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK
WHERE YEAR(PUBLISHED_DATE) = 2021 AND CATEGORY = '인문'
ORDER BY PUBLISHED_DATE ASC;

평균 일일 대여 요금 구하기

SELECT ROUND(AVG(DAILY_FEE), 0) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV';

자동차 대여 기록에서 장기/단기 대여 구분하기

SELECT HISTORY_ID,
       CAR_ID,
       DATE_FORMAT(start_date, '%Y-%m-%d') AS START_DATE,
       DATE_FORMAT(end_date, '%Y-%m-%d') AS END_DATE,
       CASE
           WHEN (DATEDIFF(END_DATE, START_DATE) + 1) >= 30 THEN '장기 대여'
           ELSE '단기 대여'
       END AS REND_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE DATE_FORMAT(start_date, '%Y-%m-%d') LIKE '2022-09%'
ORDER BY HISTORY_ID DESC;

❗DATEDIFF에서는 종료일 포함X, 따라서 하루를 더해줘야 종료일이 포함됨

특정 옵션이 포함된 자동차 리스트 구하기

SELECT CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%네비게이션%'
ORDER BY CAR_ID DESC;

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

SELECT B.TITLE,
       B.BOARD_ID,
       R.REPLY_ID,
       R.WRITER_ID,
       R.CONTENTS,
       DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD B JOIN USED_GOODS_REPLY R ON B.BOARD_ID = R.BOARD_ID
WHERE YEAR(B.CREATED_DATE ) = 2022 AND MONTH(B.CREATED_DATE) = 10
ORDER BY R.CREATED_DATE ASC, B.TITLE ASC;

Python 개발자 찾기

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPER_INFOS
WHERE SKILL_1 LIKE '%Python%' OR SKILL_2 LIKE '%Python%' OR SKILL_3 LIKE '%Python%' 
ORDER BY ID;

 

 

잔챙이 잡은 수 구하기

SELECT COUNT(*) AS FISH_COUNT
FROM FISH_INFO
WHERE LENGTH IS NULL

잡은 물고기의 평균 길이 구하기

SELECT ROUND(AVG(IFNULL(LENGTH, 10)),2) AS AVERAGE_LENGTH
FROM FISH_INFO;

잡은 물고기중 가장 큰 물고기의 길이 구하기

SELECT CONCAT(MAX(LENGTH), 'cm') AS MAX_LENGTH
FROM FISH_INFO;

한 해에 잡은 물고기 수 구하기

SELECT COUNT(*) AS FISH_COUNT
FROM FISH_INFO
WHERE YEAR(TIME) = 2021;

가장 큰 물고기 10마리 구하기

SELECT ID, LENGTH
FROM FISH_INFO
ORDER BY LENGTH DESC, ID ASC
LIMIT 10













'프로그래밍 언어 > 02. SQL' 카테고리의 다른 글

[SQL] 06. 프로그래머스 LV.3 대여 기록이 존재하는 자동차 리스트 구하기  (2) 2025.07.17
[SQL] 05. 프로그래머스 LV.3 조건별로 분류하여 주문상태 출력하기  (1) 2025.07.17
[SQL] 04. 프로그래머스 LV.3 오랜 기간 보호한 동물(1)  (0) 2025.07.17
[SQL] 03. 프로그래머스 LV.3 카테고리 별 도서 판매량 집계하기  (0) 2025.07.17
[SQL] 02. 프로그래머스 LV.2 문제 정답  (2) 2025.07.11
'프로그래밍 언어/02. SQL' 카테고리의 다른 글
  • [SQL] 05. 프로그래머스 LV.3 조건별로 분류하여 주문상태 출력하기
  • [SQL] 04. 프로그래머스 LV.3 오랜 기간 보호한 동물(1)
  • [SQL] 03. 프로그래머스 LV.3 카테고리 별 도서 판매량 집계하기
  • [SQL] 02. 프로그래머스 LV.2 문제 정답
dalleeoppaa
dalleeoppaa
DA, GIS 공부 기록
  • dalleeoppaa
    달래오빠
    dalleeoppaa
  • 전체
    오늘
    어제
    • 분류 전체보기 (113)
      • GIS (22)
        • 01. GIS TIL (13)
        • 02. OpenSource Geo Data (6)
        • 03.사이드 프로젝트 (1)
      • 프로젝트 (6)
        • 01. 상권분석 지도 (3)
        • 02. olist 고객 RFM 분석 (3)
      • PointCloud (1)
      • 프로그래밍 언어 (58)
        • 01. Python (1)
        • 02. SQL (49)
        • 03. C++ (3)
        • 04. TIL (5)
      • 데이터분석 (23)
        • 01. Google Cloud Platform (1)
        • 02. GA4 & GTM (1)
        • 03. LookerStudio (4)
        • 04. Apach Spark (7)
        • 05. 데이터 시각화 (10)
      • 인턴 (2)
        • 01. NPL (2)
        • 02. TIL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스코테
    데이터분석가코테
    GIS
    데이터분석가
    PostgreSQL
    태블로부트캠프
    MySQL
    c++독학
    데이터분석취준
    태블로신병훈련소
    solvesql
    프로그래머스SQL
    프로그래머스
    데이터분석
    SQL
    postgresql연습
    코딩테스트
    sql코테
    태블로연습
    프로그래머스lv3
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
dalleeoppaa
[SQL] 01. 프로그래머스 LV.1 문제 정답
상단으로

티스토리툴바