Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вычисление процентов  [new]
alex11
Guest
есть табличка для хранения результатов опросов пользователей


questionid answerasnumber
q11 1
q11 2
q11 1
q11 3


и есть запрос, который выдаст кол-во ответов для конкретной опции


select answerasnumber, count(answerasnumber) from survey
where questionid='q11'
group by answerasnumber


вернет

[src]
answernumber count
1 2
2 1
3 1
[src]

можно ли каким-нибудь макаром расчитать еще и проценты? т.е. получить

[src]
answernumber count percent
1 2 50%
2 1 25%
3 1 25%
[src]

Спасибо за ответы!
12 мар 03, 11:53    [145014]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление процентов  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Одним запросом - наврядли.

declare @summa money
select @summa=count(*)
from survey
where questionid='q11'
select answerasnumber,
count(answerasnumber) as count,
convert(money, count(answerasnumber))/@summa*100 as percent
from survey
where questionid='q11'
group by answerasnumber
12 мар 03, 12:23    [145051]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление процентов  [new]
alex11
Guest
хранимая процедура тоже подойдет, tpg, спасибо!
12 мар 03, 12:28    [145055]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление процентов  [new]
Genady
Member

Откуда: Москва
Сообщений: 2005
2 tpg
А почему в качестве тип данных используется money?
Таким образом можно снять погрешность?
12 мар 03, 12:51    [145081]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление процентов  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Это чтобы меньше руками пост писать Картинка с другого сайта.
12 мар 03, 13:00    [145097]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление процентов  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
ну если это можно назвать одним запросом...

select answerasnumber,
count(answerasnumber) as count,
convert(money, count(answerasnumber))/summa*100 as percent
from survey, (select count(*) as summa from survey where questionid='q11') as xxx
where questionid='q11'
group by answerasnumber

еще лучще наверное questionid вынести в группировку

select sss.questionid, answerasnumber,
count(answerasnumber) as count,
convert(money, count(answerasnumber))/summa*100 as percent
from survey sss, (select questionid, count(*) as summa from survey where questionid='q11' group by questionid) as xxx
where questionid='q11' and sss.questionid=xxx.questionid
group by sss.questionid,answerasnumber
12 мар 03, 13:05    [145102]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление процентов  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
Ну вот, а говорили, SergSuper вложенных запросов не любит. Конечно, без него не обойтись в приведенных фрагментах, но, представляю себе, какие муки пришлось Вам пройти, чтобы написать их. :-)))
12 мар 03, 13:17    [145126]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление процентов  [new]
alex11
Guest
serg, ну вы супер! :-) большое спасибо

добавлю, что в группировку еще "xxx.summa" надо добавить
12 мар 03, 13:26    [145145]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить