Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

SQL. Помогите составить запрос

dpfpglks dkxkfndkkd Ученик (97), на голосовании 1 год назад
Есть таблица web_measure в MS SQL, с измерениями открытия сайтов (100 строк со столбцами measurement_time – время измерения, err_msg – имя ошибки).

Необходимо написать запрос который выведет следующую статистку:
1. Количество успешных попыток - попытки для которых [err_msg] = 'OK';
2. Общее количество попыток - все попытки для которых [err_msg] не равно 'ERR' или 'ERR_NO_PAGESIZE';
3. Доступность сайтов как отношение успешных попыток ко всем попыткам;
4. Указанная выше статистика нужна сгруппированная по часам.

Уточнения:
1. Количество попыток любое неотрицательное целое число;
2. Запрос должен быть максимально быстрым.

Часть исходной таблицы:Вот мой последний вариант запроса:

SELECT measurement_time, COUNT(err_msg) AS successful_attempts, COUNT(err_msg) AS all_attempts
FROM web_measure
WHERE successful_attempts = ‘OK’ AND all_attempts NOT IN(‘ERR’, ‘ERR_NO_PAGESIZE’)
GROUP BY measurement_time
Голосование за лучший ответ
Венедикта Соболева Ученик (102) 1 год назад
сделаю за деньги пишите tokarevandrey2018@gmail.com
Jurijus Zaksas Искусственный Интеллект (445767) 1 год назад
Берешь и составляешь запросы по отдельности аки именованные подзапросы (оракловский синтаксис):

 WITH SUCCESSES AS
(SELECT COUNT(*) CNT, EXTRACT HOUR FROM MEASUREMENT_TIME HR
FROM WEB_MEASURE
WHERE ERR_MSG='OK'
GROUP BY EXTRACT HOUR FROM MEASUREMENT_TIME
),
TOTAL_TRIES AS
(SELECT COUNT(*) CNT, EXTRACT HOUR FROM MEASUREMENT_TIME HR
FROM WEB_MEASURE
WHERE ERR_MSG !='ERR' AND ERR_MSG !='ERR_NO_PAGESIZE'
GROUP BY EXTRACT HOUR FROM MEASUREMENT_TIME
), ...
А затем фулл-джойнишь эти подзапросы:
 SELECT NVL(S.HR, T.HR) HR, NVL(S.CNT, 0) SUCCESS_COUNT, NVL(T.CNT, 0) TOTAL_ATTEMPT_COUNT, ...
FROM SUCCESSES S
FULL OUTER JOIN TOTAL_TRIES T
ON S.HR=T.HR
FULL OUTER JOIN ...
И вуаля. Синтаксис может отличаться, особенно что касается работы в датами, но в целом идея понятна же?
dpfpglks dkxkfndkkdУченик (97) 1 год назад
Не совсем понял, попытался реализовать на знакомом синтаксисе, ничего не вышло
Похожие вопросы