Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Счет записей по значениями внутри group by
|
|||
|---|---|---|---|
|
#18+
Ситуация следующая. Есть таблица оценки качества обслуживания оператора qos с полями: calldate - Дата/время звонка client_num - Номер телефона клиента operator_num - Внутренний номер оператора score - Оценка Оценка может быть от 1 до 5 Фрагмент (пример) таблицы: calldateclient_numoperator_numscore2017-01-12 15:07:0189991234571134152017-01-12 15:13:1289991234572134132017-01-12 15:57:2089991234573134262017-01-12 16:00:238999123457413415 Также есть запрос, который считает кол-во оценок и среднюю оценку по операторам за определенный период Код: sql 1. 2. 3. 4. 5. 6. 7. Запрос работает и возвращает operator_numcnt_scoreavg_score134134.3333134216.0000 Дополнительно нужно посчитать кол-во каждой оценки Например, оператор 1341, единицу поставили 0 раз, двойку - 0 раз, тройку - 1 раз, четверку - 0 раз, пятерку - 2 раза. Хочется сделать вот такой запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Давно работал с oracle и помню, что такая конструкция там работала. Но в Mysql cnt_1..cnt_5 возвращает какую-то чушь. operator_numcnt_scoreavg_scorecnt_1cnt_2cnt_3cnt_4cnt_5134134.3333NULLNULLNULLNULL3134216.0000NULLNULLNULLNULLNULL Вопрос к знатокам, должен ли такой запрос работать в mysql или я что-то делаю не так? Версия MySQL: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 10:36 |
|
||
|
Счет записей по значениями внутри group by
|
|||
|---|---|---|---|
|
#18+
Поправка, оценки могут быть от 1 до 7, но не в этом суть Вот так работает Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. operator_numcnt_scoreavg_scorecnt_1cnt_2cnt_3cnt_4cnt_5cnt_6cnt_7134134.33330010200134216.00000000010 Но плодить подзапросы не хочется, и сам запрос выглядит не очень Можно ли всё-таки в такой ситуации использовать dual ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 10:47 |
|
||
|
Счет записей по значениями внутри group by
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Чуток магии приведения типа bool к int и sum по логическому условию делает то что нужно. Если подходить строго, то sum(if(score = 1, 1, 0)) или sum(case when score = 1 then 1 else 0 end) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 10:55 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39385242&tid=1830999]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 138ms |

| 0 / 0 |
