У меня есть ситуации реального мира:SQL Server - счетные столбец с условиями, а также outputing проценты
Есть каюты, которые были определены «дом». Люди могут жить в каютах. «person_age» определяет возраст каждого человека.
Я пытаюсь выяснить, сколько людей старше 35 лет живут в каждой каюте, и какой процент людей в этой каюте старше 35 лет, при условии, что я только хочу рассмотреть людей, которые переехали в каюту в определенный диапазон дат, и я также хочу знать результаты за каждую кабину.
У меня есть следующий запрос:
select
[house]
,count(case when person_age > 35 then 1 end) as [older than 35]
,(cast(count(case when person_age > 35 then 1 end) as float))/(count(case when person_age > 35 then 1 else 1 end)) as [percent older than 35]
from cabins
where
move_in_date >= '2014-02-01'
and move_in_date <= '2014-03-01'
group by [house]
Есть ли лучший способ вычислить процентное поле, например, определенная функция или что-то? Это работает, я думаю, но это так уродливо.
Я использую функцию count правильно? Мне кажется, что я хочу, но я не уверен.
'count (case when person_age> 35 then 1 else 1 end)' this part может быть 'count (1)' – Darka
Я предполагаю, что у вас есть предложение GROUP BY, в противном случае утверждение не будет даже компиляции. – brazilianldsjaguar
Гоша, ты прав. По какой-то причине это не так. – user38858