Количество совпадений на 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
...
Другие вопросы по тегам