🚩오늘의 문제는?
SQL - level 3
1.업그레이드 할 수 없는 아이템 구하기
2.물고기 종류 별 대어 찾기
3.대장균의 크기에 따라 분류하기 2

SELECT DISTINCT PARENT_ITEM_ID
FROM ITEM_TREE
WHERE PARENT_ITEM_ID IS NOT NULL;
SELECT DISTINCT A.ITEM_ID
FROM ITEM_TREE A LEFT JOIN (SELECT DISTINCT PARENT_ITEM_ID
FROM ITEM_TREE
WHERE PARENT_ITEM_ID IS NOT NULL) AS B
ON A.ITEM_ID = B.PARENT_ITEM_ID
WHERE B.PARENT_ITEM_ID IS NULL;
SELECT C.ITEM_ID, C.ITEM_NAME, C.RARITY
FROM ITEM_INFO AS C
WHERE C.ITEM_ID IN (SELECT DISTINCT A.ITEM_ID
FROM ITEM_TREE A LEFT JOIN (SELECT DISTINCT PARENT_ITEM_ID
FROM ITEM_TREE
WHERE PARENT_ITEM_ID IS NOT NULL) AS B
ON A.ITEM_ID = B.PARENT_ITEM_ID
WHERE B.PARENT_ITEM_ID IS NULL)
ORDER BY C.ITEM_ID DESC;

SELECT FISH_TYPE, MAX(LENGTH)
FROM FISH_INFO
GROUP BY FISH_TYPE;
SELECT A.ID ,A.FISH_TYPE, A.LENGTH
FROM FISH_INFO AS A JOIN (SELECT FISH_TYPE, MAX(LENGTH) AS LENGTH
FROM FISH_INFO GROUP BY FISH_TYPE) AS B
ON A.FISH_TYPE= B.FISH_TYPE AND A.LENGTH = B.LENGTH ;
SELECT ID,FISH_NAME,LENGTH
FROM FISH_NAME_INFO C JOIN
(SELECT A.ID ,A.FISH_TYPE, A.LENGTH
FROM FISH_INFO AS A JOIN (SELECT FISH_TYPE, MAX(LENGTH) AS LENGTH
FROM FISH_INFO GROUP BY FISH_TYPE) AS B
ON A.FISH_TYPE= B.FISH_TYPE AND A.LENGTH = B.LENGTH) AS D
ON C.FISH_TYPE = D.FISH_TYPE
ORDER BY ID ASC;

SELECT ID,PARENT_ID ,SIZE_OF_COLONY,DIFFERENTIATION_DATE,GENOTYPE,
NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC) AS COLONY_NAME
FROM ECOLI_DATA
ORDER BY ID ASC;
SELECT ID ,
CASE WHEN COLONY_NAME = 1 THEN 'CRITICAL'
WHEN COLONY_NAME = 2 THEN 'HIGH'
WHEN COLONY_NAME = 3 THEN 'MEDIUM'
ELSE 'LOW'
END AS COLONY_NAME
FROM(
SELECT ID,PARENT_ID ,SIZE_OF_COLONY,DIFFERENTIATION_DATE,GENOTYPE,
NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC) AS COLONY_NAME
FROM ECOLI_DATA
) AS A
ORDER BY ID ASC ;
✔ NTILE 함수 : 분위가 낮을 수록 값이 높다.
✔ NTILE(3) - 3개 단위로 쪼개짐 , NTILE(4) - 4개 단위로 쪼개짐
✔ NTILE(4) OVER ( ORDER BY COL2 )
: 여기서 COL2은 나열 기준 컬럼!
: 예시) 소득을 내림차순한 것을 기준으로 4개의 그룹으로 나누기
NTILE(4) OVER (ORDER BY 소득 DESC)
✔ NTILE(4) OVER ( PARTITION BY COL1 ORDER BY COL2 )
: 여기서 COL1을 기준으로 나누고, COL2로 나열하기
: 예시) 고객의 성별 내에서 소득을 내림차순한 것을 기준으로 4개의 그룹으로 나누기
NTILE(4) OVER (ORDER BY 성별 ORDER BY 소득 DESC)