2017-11-14 13 views
1

더미 예제를 사용하여 암시 적 누락 값이있는 데이터 세트를 완료해야합니다. 이것은 R에서 tidyr의 기능 complete을 사용하면 사소한 것입니다.tidyr의 complete()를 SQL로 구현하는 방법은 무엇입니까?

library(tidyr) 

df <- data.frame(Borough = c('Brooklyn', 'Brooklyn', 'Queens'), 
       Crime = c('Robbery', 'Homicide', 'Drug'), 
       Count=c(1, 2, 1)) 

> df 
    Borough Crime Count 
1 Brooklyn Robbery  1 
2 Brooklyn Homicide  2 
3 Queens  Drug  1 

#Complete implicit missing values 

> complete(df, Borough, Crime, fill=list(Count=0)) 
    Borough Crime Count 
1 Brooklyn  Drug  0 
2 Brooklyn Homicide  2 
3 Brooklyn Robbery  1 
4 Queens  Drug  1 
5 Queens Homicide  0 
6 Queens Robbery  0 

그러나 실제 데이터가 매우 커서 Oracle의 SQL 테이블에 저장되는 경우 SQL 쿼리를 사용하여 어떻게 수행 할 수 있습니까?

답변

4

십자가가있는 자치구를 범죄로 연결하고 원래 표를 결합하여 누락 된 행을 0으로 계산합니다.

select b.borough,c.crime,coalesce(t.count,0) as count 
from (select distinct borough from tbl) b 
cross join (select distinct crime from tbl) c 
left join tbl t on t.borough=b.borough and t.crime=c.crime 
+0

완벽하게 작동합니다. – Mihael