본문 바로가기

SQL

SELECT 연습(4)

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

  • PERCENT_RANK()
    • 백분율 순위를 계산, 현재 행 값에 대해 0~1 사이의 상대값을 리턴
select a.ID, 
        case WHEN a.percent <= 0.25 THEN 'CRITICAL'
        WHEN a.percent <= 0.5 THEN 'HIGH'
        WHEN a.percent <= 0.75 THEN 'MEDIUM'
        else 'LOW' end COLONY_NAME
from 
(select ID,
        percent_rank() over(order by SIZE_OF_COLONY desc) percent
from ECOLI_DATA)
a
order by 1

 

 

특정 세대의 대장균 찾기 (4LV 💁😂)

  • 자식테이블이랑 부모테이블 조인을 할 때 inner조인을 해서 풀었어야 했음
  • 1세대는 무조건 부모가 null이기 때문에 이 조건을 추가해서 했어야 했음

 

첫번째 풀이 

select c.aId as ID
from 
(select a.ID aId,
        a.PARENT_ID aPid,
        b.ID bId,
        b.PARENT_ID bPid
from ECOLI_DATA a
left join ECOLI_DATA b on a.PARENT_ID = b.ID
)
c left join ECOLI_DATA d on c.bPid = d.ID
where aPid is null
order by 1

 

두번째 풀이

select c.aId as ID
from 
(select a.ID aId,
        a.PARENT_ID aPid,
        b.ID bId,
        b.PARENT_ID bPid
from ECOLI_DATA a
inner join ECOLI_DATA b on a.PARENT_ID = b.ID
)
c inner join ECOLI_DATA d on c.bPid = d.ID
where d.PARENT_ID is null
order by ID asc

 

 

'SQL' 카테고리의 다른 글

SQL 총연습 (2)  (0) 2024.12.31
SQL 총연습 (1)  (1) 2024.12.24
SELECT 연습(3)  (1) 2024.12.19
SELECT 연습(2)  (2) 2024.12.18
SELECT 연습(1)  (0) 2024.12.17