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
반응형
'Data Science > SQL' 카테고리의 다른 글
[Elice SQL] 다중행, 단일행 서브쿼리 (0) | 2025.03.01 |
---|---|
[프로그래머스 sql] date_format()안 해도 month() 가능 (0) | 2025.02.26 |
[elice sql] sql 데이터 삽입/수정/삭제 (0) | 2025.02.25 |
[프로그래머스 sql] where ~ like는 문자열 타입 비교, date는 다르게 (0) | 2025.02.24 |
[Elice sql] 쿼리 순서 주의할 것 select는 실행이 마지막임! (0) | 2025.02.24 |