[String, Date 13~19] SQL 코딩테스트 고득점 Kit

강다겸·2025년 7월 26일
post-thumbnail

13. 중성화 여부 파악하기 (LV 2)
14. 오랜 기간 보호한 동물(2) (LV 3)
15. 카테고리 별 상품 개수 구하기 (LV 2)
16. DATETIME에서 DATE로 형 변환 (LV 2)
17. 연도 별 평균 미세먼지 농도 조회하기 (LV 2)
18. 한 해에 잡은 물고기 수 구하기 (LV 1)
19. 분기별 분화된 대장균의 개체 수 구하기 (LV 2)

13. 중성화 여부 파악하기 (LV 2)

정답:

SELECT ANIMAL_ID
    ,  NAME
    ,  CASE WHEN (SEX_UPON_INTAKE LIKE 'Neutered%' OR SEX_UPON_INTAKE LIKE 'Spayed%') THEN 'O'
            ELSE 'X' END AS '중성화'
  FROM ANIMAL_INS
 ORDER
    BY ANIMAL_ID

14. 오랜 기간 보호한 동물(2) (LV 3)

정답:

WITH ANIMAL_INTAKEN_DAYS AS (
    SELECT i.ANIMAL_ID
        ,  i.NAME
        ,  DATEDIFF(o.DATETIME, i.DATETIME) + 1 AS INTAKE_DAYS
      FROM ANIMAL_INS AS i
      JOIN ANIMAL_OUTS AS o ON i.ANIMAL_ID = o.ANIMAL_ID
     GROUP
        BY i.ANIMAL_ID, i.NAME
)
, DAYS_RANKED AS (
    SELECT ANIMAL_ID
        ,  NAME
        ,  ROW_NUMBER() OVER(ORDER BY INTAKE_DAYS DESC) AS RNK
      FROM ANIMAL_INTAKEN_DAYS
)
SELECT ANIMAL_ID
    ,  NAME
  FROM DAYS_RANKED
 WHERE RNK <= 2
 ORDER
    BY RNK 

15. 카테고리 별 상품 개수 구하기 (LV 2)

정답:

SELECT SUBSTRING(PRODUCT_CODE, 1, 2) AS CATEGORY
    ,  COUNT(PRODUCT_ID) AS PRODUCTS
  FROM PRODUCT
 GROUP
    BY SUBSTRING(PRODUCT_CODE, 1, 2)
 ORDER
    BY CATEGORY

16. DATETIME에서 DATE로 형 변환 (LV 2)

정답:

SELECT ANIMAL_ID
    ,  NAME
    ,  DATE_FORMAT(DATETIME, '%Y-%m-%d') AS '날짜'
  FROM ANIMAL_INS
 ORDER
    BY ANIMAL_ID

17. 연도 별 평균 미세먼지 농도 조회하기 (LV 2)

정답:

SELECT YEAR(YM) AS YEAR
    ,  ROUND(AVG(PM_VAL1), 2) AS 'PM10'
    ,  ROUND(AVG(PM_VAL2), 2) AS 'PM2.5'
  FROM AIR_POLLUTION
 WHERE LOCATION2 = '수원'
 GROUP
    BY YEAR(YM)
 ORDER
    BY YEAR 

18. 한 해에 잡은 물고기 수 구하기 (LV 1)

정답:

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

19. 분기별 분화된 대장균의 개체 수 구하기 (LV 2)

정답:

SELECT CONCAT(QUARTER(DIFFERENTIATION_DATE), 'Q') AS QUARTER
    ,  COUNT(ID) AS ECOLI_COUNT
  FROM ECOLI_DATA
 GROUP
    BY CONCAT(QUARTER(DIFFERENTIATION_DATE), 'Q')
 ORDER
    BY QUARTER ASC

0개의 댓글