SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 28.05.2017 07:36:48

Nik01
Участник
Зарегистрирован: 28.05.2017
Сообщений: 6

Выборка с рейтингом

Добрый день. Помогите решить задачку, возможно с подвохом:
Есть таблица opros в неё занесены результаты опроса в числовом значение, но через запятую:
dattim          n_op          answ

27.01.2014   3                1,4,6
29.01.2014.  1.                3,5,7
И т.д
Где n_op это номер операторов проводивший опрос, а answ это данные ответы.
Необходимо получить отчет за количество отданных голосов в разбивке по месяцам.

Неактивен

 

#2 28.05.2017 11:20:14

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Выборка с рейтингом

Не очень понял задачу

за количество

, но если нужно количество ответов то можно использовать

LENGTH(REGEXP_REPLACE(answ, '\\d+',''))+1

Неактивен

 

#3 28.05.2017 12:30:57

Nik01
Участник
Зарегистрирован: 28.05.2017
Сообщений: 6

Re: Выборка с рейтингом

Уточню, нужно посчитать количество вариантов ответа, примерный вид:
Дата.              Вариант ответа  Количество отв.
Январь 2014.              1.                                   10
янв.2014.                     2.                                   22
Янв2014.                      3.                                   7
И т.д.
Вариантов ответа  7.

Отредактированно Nik01 (28.05.2017 12:51:19)

Неактивен

 

#4 28.05.2017 13:29:17

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5829

Re: Выборка с рейтингом

если число вариантов ответа известно, то можно решать для каждого и собирать через union all


select month(dattim) `дата`, 1 `Вариант ответа`, count(*) `Количество отв.` from `таблица` where answ = '1' or answ like('1,%') or answ like('%,1') or answ like('%,1,%') group by month(dattim)
union all
... и так для каждого варианта ответа


есть возможность сменить структуру таблицы?

Неактивен

 

#5 28.05.2017 13:44:56

Nik01
Участник
Зарегистрирован: 28.05.2017
Сообщений: 6

Re: Выборка с рейтингом

Да варианты ответа от 1 до 7.

Неактивен

 

#6 28.05.2017 13:45:48

Nik01
Участник
Зарегистрирован: 28.05.2017
Сообщений: 6

Re: Выборка с рейтингом

В задании про структуру ни чего не сказанное, а какую лучше сделать?

Неактивен

 

#7 28.05.2017 14:05:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5829

Re: Выборка с рейтингом

храните по одному ответу:

dattim          n_op          answ
27.01.2014   3                1
27.01.2014   3                4
27.01.2014   3                6
...

тогда нужный вам запрос примет вид:

select month(dattim) `дата`, answ `Вариант ответа`, count(*) `Количество отв.` from `таблица` group by month(dattim), answ;

Неактивен

 

#8 28.05.2017 18:07:39

Nik01
Участник
Зарегистрирован: 28.05.2017
Сообщений: 6

Re: Выборка с рейтингом

Спасибо, если таблица такого вида была бы, то всё проще решалось.
Подскажите ещё по самой верхней таблице, пожалуйста :
Необходимо получить среднее и максимальное количество ответов на одного оператора (поле n_op) в день в разбивке по месяцам.
Такой вид:

Месяц.         Кол-во ответов в день
                      Среднее.             Максимально
Январь.            26.                             30
Февраль.          43.                             45
И т.д.

Неактивен

 

#9 28.05.2017 19:52:01

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5829

Re: Выборка с рейтингом

как посчитать кол-во ответов вам подсказал klow ещё в самом первом ответе (на 1 больше, чем кол-во запятых)
осталось добавить группировку по месяцу и оператору, считая avg() и max()

Неактивен

 

#10 28.05.2017 19:58:02

Nik01
Участник
Зарегистрирован: 28.05.2017
Сообщений: 6

Re: Выборка с рейтингом

Ок, спасибо большое. Попробую реализовать.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson