Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка в запросе  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в запросе  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5114
AleksQr
Сейчас ошибка в том что запрос вычисляет per по каждому запросу а не по сотруднику.

(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
и зачем вам все эти поля из селекта если дальше вам нужны только эти ваши per и kolvo
19 окт 16, 15:53    [19800534]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в запросе  [new]
iap
Member

Откуда: Москва
Сообщений: 47052
AleksQr
COUNT(CASE WHEN time <= 6 THEN 1 ELSE 0 END)
Забавно!
А ничего, что COUNT(выражение) считает количество строк, для которых выражение IS NOT NULL?
Написанный выше COUNT эквивалентен COUNT(*), ибо получается NOT NULL для всех строк запроса.
Замените COUNT на SUM
19 окт 16, 16:15    [19800662]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в запросе  [new]
AleksQr
Member

Откуда:
Сообщений: 4
iap,

Спасибо! Помогло
21 окт 16, 14:01    [19809184]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить