いくつかのIISサーバーログを(LogParserを使用して)解析していますが、ブラウザの各タイプ(ユーザーエージェント)の集計数がわかります。ここで複数のグループをグループ化するSQLクエリ
これまでのところ、私のクエリです:
SELECT COUNT(*) as totalHits, CS(User-Agent) as browser
FROM E:\Logs\ex111101.log
WHERE (CS(User-Agent) LIKE '%ipad%'
OR CS(User-Agent) LIKE '%iphone%'
OR CS(User-Agent) LIKE '%blackberry%'
OR CS(User-Agent) LIKE '%windows cs%'
OR CS(User-Agent) LIKE '%android%')
AND cs-uri-stem LIKE '%.asp%'
GROUP BY browser
ORDER BY totalHits DESC
これは私が望むように私にユーザーエージェントのリストをgivse、そして私のブラウザの各グループのヒット数を与える:
Total Hits | Browser
467 | AndroidA
45 | AndroidB
23 | BlackberryC
233 | BlackberryD
私が欲しいのはこれです:
すべてのAndroidのエントリは、一般的なAndroidの行の下にカウントし、合計しTotal Hits | Browser
512 | Android
256 | Blackberry
。この場合、Androidの合計ヒット数は467 + 45、ブラックベリーは233 = 33などとなります。
そこから、合計のヒット数をパーセンテージで表すことができるように、各ブラウザにパーセントの列を設定します。
何か助けていただければ幸いです。ありがとう!
* UPDATE
は、以下の提案に従っていますが、Log Parserツールによって正しく実行するためにはいくつかの調整をしなければなりませんでした。なんらかの理由で、Log ParserはCASEステートメントのLIKEキーワードが気に入らなかった。以下は、しかしうまく働い:
select
case strcnt(TO_LOWERCASE(cs(user-agent)),'android') WHEN 1 THEN 'Android' else
case strcnt(TO_LOWERCASE(cs(user-agent)),'ipad') WHEN 1 THEN 'iPad' else
case strcnt(TO_LOWERCASE(cs(user-agent)),'blackberry') WHEN 1 THEN 'Blackberry' else
case strcnt(TO_LOWERCASE(cs(user-agent)),'windows ce') WHEN 1 THEN 'Windows' else
case strcnt(TO_LOWERCASE(cs(user-agent)),'iphone') WHEN 1 THEN 'iPhone'
ELSE 'Non-Mobile' End End End End End as Browser,
count(*) as TotalHits
from MYLOG
group by Browser
order by TotalHits desc
データには本当に「AndroidA」、「AndroidB」、「BlackberryC」、「BlackberryD」などが含まれていますか?あるいは、質問の目的のためにデータを簡素化していますか? – Asaph
ただ単純化しています。彼らはバージョンやデバイスに基づいてさまざまなユーザーエージェント文字列です...しかし、ほとんどの場合、同様の識別子が含まれています。 – tresstylez