Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос с группировкой, Кол-во строк, удовлетворяющих условию 
:(
    Опции темы
pelikesha
Дата 13.6.2012, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 22.6.2010

Репутация: нет
Всего: нет



Здравствуйте, прошу помощи в составлении SQL запроса

Таблица: 

id_r id_p summ mark 
001  001   16   2
001  002   15   3
001  003   14   4
002  001   13   3
002  002   16   3
002  003   13   5
002  004   14   3
003  001   16   5
003  002   13   4
003  003   11   5
003  004   16   3
003  005   14   4


Требуемый результат:

id_r avg_summ kol 3 
001      15     1
002      14     4
003      14     1


Т.е. сгруппировав по id_r, посчитать среднее значение по столбцу summ, а так же количество человек внутри этого id_r  с оценкой (mark=3). Сейчас у меня реализованы лишь первые два столбца таблицы:

Код

SELECT table.id_r, avg(table.summ) as avg_summ FROM table GROUP BY table.id_r;


А вот как добавить количество строк, удовлетворяющих условию - не понимаю... Все попытки были безуспешны.
Заранее благодарю за помощь! 
PM MAIL   Вверх
Akina
Дата 13.6.2012, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(pelikesha @  13.6.2012,  16:58 Найти цитируемый пост)
как добавить количество строк, удовлетворяющих условию - не понимаю

Код

sum(case when mark=3 then 1 else 0 end)



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 13.6.2012, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(pelikesha @  13.6.2012,  16:58 Найти цитируемый пост)
количество человек внутри этого id_r  с оценкой (mark=3)

count(/*distinct ?*/ case when mark=3 then id_p end)


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
pelikesha
Дата 13.6.2012, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 22.6.2010

Репутация: нет
Всего: нет



Akina, спасибо, отписал вам в ЛС... К сожалению выдало ошибку синтаксиса(
Zloxa, не совсем понял вашу запись :(
PM MAIL   Вверх
Данкинг
Дата 13.6.2012, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Цитата(pelikesha @  13.6.2012,  17:51 Найти цитируемый пост)
К сожалению выдало ошибку синтаксиса

А СУБД какая?



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Zloxa
Дата 13.6.2012, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(pelikesha @  13.6.2012,  17:51 Найти цитируемый пост)
 не совсем понял вашу запись :( 

Я предположил что id_p идентифицирует человека. Вам ведь человеков нужно посчитать, а не записи оценок? ничто не указывает на то, что пара (id_r,id_p) является уникальной. По этой причине, на всякий случай, закоментировал distinct, который следует раскоментировать, если в группе по id_r может быть упомянут несколько раз один человек с оценкой равной три, но посчитаться эти несколько записей должны как одна. По этой же причине используется count а не sum. Count считает не null значения. Если условие в case не вернет истину, значение в count окажется не определенным и не будет посчитано.

upd
Методика, предложенная Akina посчитает оценки а не человеков. В случае, если человеки не могут быть не определены и пара (человек, оценка) в пределах группы уникальны, это значение будет совпадать с количеством человеков. smile 

Это сообщение отредактировал(а) Zloxa - 13.6.2012, 17:24


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 13.6.2012, 17:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(pelikesha @  13.6.2012,  17:51 Найти цитируемый пост)
отписал вам в ЛС... 

Больше так не делайте - нарвётесь на пожизненный игнор.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
pelikesha
Дата 13.6.2012, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 22.6.2010

Репутация: нет
Всего: нет



Цитата(Данкинг @ 13.6.2012,  16:56)
Цитата(pelikesha @  13.6.2012,  17:51 Найти цитируемый пост)
К сожалению выдало ошибку синтаксиса

А СУБД какая?
Да, сразу не указал, не бейте сильно... MS Access
Цитата
Методика, предложенная Akina посчитает оценки а не человеков. В случае, если человеки не могут быть не определены и пара (человек, оценка) в пределах группы уникальны, это значение будет совпадать с количеством человеков.
Спасибо, понял. Нужно посчитать оценки. 
Цитата
Больше так не делайте - нарвётесь на пожизненный игнор.
Извините... smile 
PM MAIL   Вверх
Данкинг
Дата 13.6.2012, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Цитата(pelikesha @  13.6.2012,  19:34 Найти цитируемый пост)
Да, сразу не указал, не бейте сильно... MS Access

Правильно, откуда там CASE всякие.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akina
Дата 13.6.2012, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Заменяем CASE на IIF... синтаксис - во встроенной справке


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
pelikesha
Дата 14.6.2012, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 22.6.2010

Репутация: нет
Всего: нет



Цитата(Akina @ 13.6.2012,  21:43)
Заменяем CASE на IIF... синтаксис - во встроенной справке

Огромное спасибо, все получилось. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.