Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
AleksQr Member Откуда: Сообщений: 4 |
Здравствуйте, помогите с запросом, не знаю как его переписать чтобы работал так как нужно. У меня есть запрос, который обращается к таблице с полями: ФИО, id запроса,время затраченное на решение. SELECT fio, per,sum, (per/sum)*100 as result FROM (SELECT fio, sum(per) as per, sum(kolvo) as sum FROM (SELECT date_s, id, fio , time , CONVERT(decimal(5,2), COUNT(CASE WHEN time <= 6 THEN 1 ELSE 0 END) ) AS 'per' , COUNT(1) AS 'kolvo' FROM Z_speed WHERE (date_f > convert(date, @date)) GROUP BY fio,date_s,id,date_f ) tmp_table GROUP BY fio) tmp_table2 этот запрос должен производить следующие вычисления: 1. Если на решение 1 обращения затрачено меньше 6 часов то 1 иначе 0. 2. Суммируем все обращения с условием менее 6 часов по каждому сотруднику - per 3. Получаем количество обращений по каждому сотруднику - sum 4. Пункт 2 разделить на пункт 3 - result Сейчас ошибка в том что запрос вычисляет per по каждому запросу а не по сотруднику. Сообщение было отредактировано: 19 окт 16, 15:46 |
19 окт 16, 15:34 [19800416] Ответить | Цитировать Сообщить модератору |
Дедушка Member Откуда: Город трёх революций Сообщений: 5114 |
|
||
19 окт 16, 15:53 [19800534] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
А ничего, что COUNT(выражение) считает количество строк, для которых выражение IS NOT NULL? Написанный выше COUNT эквивалентен COUNT(*), ибо получается NOT NULL для всех строк запроса. Замените COUNT на SUM |
||
19 окт 16, 16:15 [19800662] Ответить | Цитировать Сообщить модератору |
AleksQr Member Откуда: Сообщений: 4 |
iap, Спасибо! Помогло |
21 окт 16, 14:01 [19809184] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |