DS가 되기 위한 여정 👩‍💻

Data Science/SQL

[프로그래머스 sql] left join, count()는 null을 0으로 셈

Tashapark 2025. 2. 25. 20:00
728x90

대장균들의 자식의 수 구하기

수정 전

- ... 일단.. 아래가 최선이긴 했는데 

뭐가 문제일까...

select p.id AS ID, 
	(case when c.count(*) = 'null' then 0
	else as CHILD_COUNT)
from ECOLI_DATA p
join ECOLI_DATA c on p.id = c.id
where p.id = c.parent_id
group by p.id
order by id;

 

수정 후 

- ㅎ 오류가 너무 많아서.. 그거 짚고 수정본

select p.id AS ID, 
	(case when c.count(*) = 'null' then 0 -- count(*) null과 비교 x, count(*) = 0
	else as CHILD_COUNT) -- else count(*) end as child_count 여야 함...ㅎ
from ECOLI_DATA p
join ECOLI_DATA c on p.id = c.id -- where 부분을 on 조건으로 사용할 수 있음. 
where p.id = c.parent_id -- where가 join 이후기 때문에 필요 x
group by p.id
order by id;

 

- 그냥 join을 하면 부모 id가 자식이 있는 경우만 반환되니깐, 

null인 경우 아예 제외됨. => so, left join 

- count는 없으면(null) 걍 0으로 반환 

select p.id AS ID, 
    count(c.id) as CHILD_COUNT
from ECOLI_DATA p
left join ECOLI_DATA c on p.id = c.parent_id -- left join을 해야 0값이 나타남. 
group by p.id
order by p.id;

 

728x90
반응형