subindev 님의 블로그

[SQL] 1일 1쿼리 - 9월 본문

데이터 관련/SQL - 1일 1쿼리

[SQL] 1일 1쿼리 - 9월

subindev 2025. 9. 11. 14:42

프로그래머스를 활용하여

1일 1쿼리 연습을 다시 시작해보려고 한다.

 

하루에 최소 1문제 이상 풀기

 

프로그래머스 'SQL 고득점 kit' 문제를

다 풀 수 있을 정도까지 실력을 높이자

 

2025/09/11(목)

# SELECT YEAR(DIFFERENTIATION_DATE), MAX(SIZE_OF_COLONY) FROM ECOLI_DATA GROUP BY YEAR(DIFFERENTIATION_DATE);

SELECT 
YEAR(d.DIFFERENTIATION_DATE) as YEAR, 
m.MAX_SIZE
d.ID 
FROM ECOLI_DATA AS d
JOIN (
		SELECT YEAR(DIFFERENTIATION_DATE) as YEAR, 
					 MAX(SIZE_OF_COLONY) as MAX_SIZE 
	  FROM ECOLI_DATA 
	  GROUP BY YEAR(DIFFERENTIATION_DATE)
	  ) as m
ON YEAR(d.DIFFERENTIATION_DATE) = m.YEAR
ORDER BY YEAR asc, YEAR_DEV asc;

 

2025/09/13(토)

분기별 분화된 대장균의 개체 수 구하기

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

대장균의 크기에 따라 분류하기 2

SELECT ID,
    CASE NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC) 
        WHEN 1 THEN 'CRITICAL'
        WHEN 2 THEN 'HIGH'
        WHEN 3 THEN 'MEDIUM'
        WHEN 4 THEN 'LOW'
    END AS COLONY_NAME 
FROM ECOLI_DATA
ORDER BY ID ASC;

 

2025/09/14(일)

특정 세대의 대장균 찾기

# SELECT * FROM  ECOLI_DATA WHERE PARENT_ID IS NULL;

SELECT 
    G3.ID 
FROM ECOLI_DATA AS G1
    INNER JOIN ECOLI_DATA AS G2 ON G1.ID = G2.PARENT_ID
    INNER JOIN ECOLI_DATA AS G3 ON G2.ID = G3.PARENT_ID
WHERE G1.PARENT_ID IS NULL
ORDER BY G3.ID ASC

 

2025/09/15(월)

업그레이드 된 아이디 구하기

SELECT 
    C.ITEM_ID,
    C.ITEM_NAME,
    C.RARITY
FROM ITEM_INFO AS C
JOIN ITEM_TREE AS T
ON C.ITEM_ID = T.ITEM_ID
JOIN ITEM_INFO AS P
ON T.PARENT_ITEM_ID = P.ITEM_ID
WHERE P.RARITY ='RARE'
ORDER BY C.ITEM_ID DESC

 

2025/09/16(화)

자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

SELECT CAR_ID, 
    CASE 
    WHEN SUM(
        CASE WHEN'2022-10-16' 
        BETWEEN START_DATE AND END_DATE THEN 1 ELSE 0 END) > 0
    THEN '대여중' ELSE '대여 가능'
    END AS AVAILABILITY
       
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC