Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Artemoniks Member Откуда: Сообщений: 8 |
Задача такая: Есть таблица: Число Город 2 Москва 4 Питер 2 Волгоград 8 Москва 12 Волгоград Задача найти среднее по городам Результат: 5 Москва 7 Волгоград 4 Питер Сводится к тому что не понятно как посчитать количество строк в группировке. Например, если мы группируем по полю Город, то как узнать что у нас сгруппировалось, например 2 Москвы, 2 Волгограда, 1 Питер ??? Реально ли это в одном запросе, или необходимо делать два запроса к этой таблице ? MS SQL SERVER 2008 |
13 фев 13, 12:04 [13919128] Ответить | Цитировать Сообщить модератору |
Ennor Tiegael Member Откуда: Сообщений: 3348 |
select City, count(*), avg(Number) from dbo.Table1 group by City; |
13 фев 13, 12:08 [13919169] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
При помощи COUNT(*). |
||
13 фев 13, 12:09 [13919182] Ответить | Цитировать Сообщить модератору |
Artemoniks Member Откуда: Сообщений: 8 |
AVG - то что надо! Спасибо! Еще бы как - нибудь сделать чтобы AVG не округляла до int, а возвращало бы float, это, наверное, только при помощи определения дополнительной таблицы, или есть более простые варианты ? |
13 фев 13, 12:18 [13919261] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Тип результата avg зависит от типа его аргумента |
||
13 фев 13, 12:19 [13919278] Ответить | Цитировать Сообщить модератору |
Добрый Э - Эх
Guest |
select avg(num) avg_int, avg(num*1.0) avg_float from (select 2 as num union all select 1)v |
||
13 фев 13, 12:23 [13919303] Ответить | Цитировать Сообщить модератору |
Artemoniks Member Откуда: Сообщений: 8 |
Да, я знаю, поэтому единственный выход упаковать значения в DECLARE TABLE, где Number float и потом применить AVG, или есть другие варианты ? |
||
13 фев 13, 12:23 [13919306] Ответить | Цитировать Сообщить модератору |
Artemoniks Member Откуда: Сообщений: 8 |
Тема! Большое спасибо!!! |
||
13 фев 13, 12:25 [13919343] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Если хочется именно float, то avg(cast(Number as float)) |
||
13 фев 13, 12:25 [13919344] Ответить | Цитировать Сообщить модератору |
.
Guest |
Artemoniks, приведением типов занимается CAST. но и сервер неявно приводит, пример выше привели |
13 фев 13, 12:25 [13919348] Ответить | Цитировать Сообщить модератору |
Artemoniks Member Откуда: Сообщений: 8 |
Спасибо! |
||||
13 фев 13, 12:27 [13919366] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |