Количество совпадений на sc-status 500 и 200, сгруппированных по cs-uri-stem в одном запросе?
Я хотел бы использовать Logparser, чтобы получить этот вывод из файла журнала IIS:
cs-uri-stem, # of cs-status=200, # of cs-status=500
/myapp/start,453,12
/myapp/send,67,8
/myapp/save,112,10
Приведенный выше вывод говорит мне, что запрос на отправку получил 67 обращений, которые прошли нормально (200) и 8 неудачных (500).
У меня проблемы с пониманием того, как мне удается получить этот вывод только одним запросом.
Я могу легко получить этот вывод, просто сгруппировав по cs-uri-stem и cs-status. Но это поместит результат в две отдельные строки:
cs-uri-stem, cs-status, count
/myapp/send,200,67
/myapp/send,500,8
Я хотел бы иметь результат в той же строке. Это возможно даже с LogParser?
Любая помощь будет оценена.
1 ответ
Это довольно просто, используйте CASE
оператор для создания двух искусственных полей, одно из которых равно 1, когда cs-status равен 200, и 0 в противном случае, а другое поле равно 1, когда cs-status равно 500, и 0 в противном случае, а затем СУММИТЕ их:
SELECT
SUM(Status200), SUM(Status500)
USING
CASE cs-status WHEN 200 THEN 1 ELSE 0 END AS Status200,
CASE cs-status WHEN 500 THEN 1 ELSE 0 END AS Status500
...