SQL Server 2008 R2에서 일부 크로스 탭을 수행하려고합니다. 그 부분은 괜찮습니다. 그러나 각 셀에 대한 백분율을 얻으려고하면 문제가 발생합니다.SQL의 집계 함수가 예상대로 작동하지 않음
사람들이 좋아하는 색과 좋아하는 과일을주는 설문지입니다.
fav_color banana banana_pct total
------------------------------------
blue 0 0 1
green 0 0 1
purple 0 0 1
red 1 50 2
yellow 1 50 2
얻을 제발 도와주세요 :
with survey as (
select 'banana' fav_fruit, 'yellow' fav_color
union select 'banana', 'red'
union select 'apple', 'yellow'
union select 'grape', 'red'
union select 'apple', 'blue'
union select 'orange', 'purple'
union select 'pomegranate', 'green'
)
select
s.fav_color,
sum(case
when s.fav_fruit = 'banana' then 1
else 0
end) as banana,
sum(case
when s.fav_fruit = 'banana' then 1
else 0
end)/sum(1) -- why does division always yield 0? "+", "-", and "*" all behave as expected.
* 100 as banana_pct,
sum(1) as total
from
survey s
group by
s.fav_color;
결과 :
fav_color banana banana_pct total
------------------------------------
blue 0 0 1
green 0 0 1
purple 0 0 1
red 1 0 2
yellow 1 0 2
내가 기대 한 내가 주어진 과일과 주어진 색상과 같은 몇을 알고 싶습니다 나는 무엇을 기대하고 있었습니까?
좋은 슬픔. ** ** 약간 더 단순화 된 예제입니다. 나는 내 시험을 그다지 해칠 생각조차하지 않았다. ;-) –