2012-05-12 9 views
2

ユーザーがページロードに関するデータを含む各行を持つテーブルがあります。フィールドの1つは、そのヒットのユーザーエージェントです。結果をブラウザでグループ化するにはどうすればよいですか?ブラウザーでユーザーエージェントをグループ化する

SELECT useragent, COUNT(useragent) AS c 
FROM hitstable 
GROUP BY useragent 
ORDER BY c DESC 

しかし、私は変更するバージョンやその他のデータに関係なく、ブラウザでグループ化したいと思います。私はそれが共通である方法でブラウザをリストしたリストを出力したいと思います。

どうすればいいですか?

答えて

0

phpのget_browser()関数を参照して、ユーザーエージェント文字列からそれを識別してください。すべてのユーザーエージェント文字列をループし、それぞれの結果を数えさせる必要があります。

0

2つのアプローチが考えられます。

1)ブラウザ名のみを格納する列を追加します。これは、あなたのテーブルを大きくするという犠牲を払って、ブラウザーでグループ化するのが非常に簡単になります。 Chrisが提案したget_browser()関数を使用できます。

2)REGEXPまたはLIKEクエリ(LIKE "%chrome /%")を使用して各ブラウザの結果を個別に照会し、結果を結合します。追加のスペースは必要ありませんが、クエリの問題がより深刻になります。

1

group http user agent sqlにソート別のユーザーエージェント/バージョンのSQLステートメント(MySQLとSQL Server)があります。 RegExpに基づいており、一般的なブラウザからSQLを切り替える。

1

ブラウザ、オペレーティングシステム、ビットアーキテクチャの解析にMySQL CASEを使用すると便利です。データ($ _SERVER ['HTTP_USER_AGENT'])は、PHPを介してMySQLテーブルに挿入されました。たぶん次のコードが役立つかもしれません。また、UserAgentに応じていくつかのフォント素晴らしいアイコンをレンダリングします。

以下のSELECTは、ブラウザの別名でグループ化されています。もちろん、OSとBitArchitectureでも同じことができます。

SELECT 
    CASE 
     WHEN `UserAgent` LIKE '%Mac%OS%' THEN '<i class="fa fa-apple"></i> Mac OS X' 
     WHEN `UserAgent` LIKE '%iPad%' THEN '<i class="fa fa-apple"></i> iPad' 
     WHEN `UserAgent` LIKE '%iPod%' THEN '<i class="fa fa-apple"></i> iPod' 
     WHEN `UserAgent` LIKE '%iPhone%' THEN '<i class="fa fa-apple"></i> iPhone' 
     WHEN `UserAgent` LIKE '%imac%' THEN '<i class="fa fa-apple"></i> mac' 
     WHEN `UserAgent` LIKE '%android%' THEN '<i class="fa fa-android"></i> android' 
     WHEN `UserAgent` LIKE '%linux%' THEN '<i class="fa fa-linux"></i> linux' 
     WHEN `UserAgent` LIKE '%Nokia%' THEN 'Nokia' 
     WHEN `UserAgent` LIKE '%BlackBerry%' THEN 'BlackBerry' 
     WHEN `UserAgent` LIKE '%win%' THEN 
      CASE 
       WHEN `UserAgent` LIKE '%NT 6.2%' THEN '<i class="fa fa-windows"></i> Windows 8' 
       WHEN `UserAgent` LIKE '%NT 6.3%' THEN '<i class="fa fa-windows"></i> Windows 8.1' 
       WHEN `UserAgent` LIKE '%NT 6.1%' THEN '<i class="fa fa-windows"></i> Windows 7' 
       WHEN `UserAgent` LIKE '%NT 6.0%' THEN '<i class="fa fa-windows"></i> Windows Vista' 
       WHEN `UserAgent` LIKE '%NT 5.1%' THEN '<i class="fa fa-windows"></i> Windows XP' 
       WHEN `UserAgent` LIKE '%NT 5.0%' THEN '<i class="fa fa-windows"></i> Windows 2000' 
       ELSE '<i class="fa fa-windows"></i> Windows' 
      END  
     WHEN `UserAgent` LIKE '%FreeBSD%' THEN 'FreeBSD' 
     WHEN `UserAgent` LIKE '%OpenBSD%' THEN 'OpenBSD' 
     WHEN `UserAgent` LIKE '%NetBSD%' THEN 'NetBSD' 
     WHEN `UserAgent` LIKE '%OpenSolaris%' THEN 'OpenSolaris' 
     WHEN `UserAgent` LIKE '%SunOS%' THEN 'SunOS' 
     WHEN `UserAgent` LIKE '%OS/2%' THEN 'OS/2' 
     WHEN `UserAgent` LIKE '%BeOS%' THEN 'BeOS' 
     ELSE 'Unknown' 
    END AS `OS`, 
    CASE 
     WHEN `UserAgent` LIKE '%edge%'THEN '<i class="fa fa-edge"></i> Edge' 
     WHEN `UserAgent` LIKE '%MSIE%' THEN '<i class="fa fa-internet-explorer"></i> Internet Explorer' 
     WHEN `UserAgent` LIKE '%Firefox%' THEN '<i class="fa fa-firefox"></i> Mozilla Firefox' 
     WHEN `UserAgent` LIKE '%Chrome%' THEN '<i class="fa fa-chrome"></i> Google Chrome' 
     WHEN `UserAgent` LIKE '%Safari%' THEN '<i class="fa fa-safari"></i> Apple Safari' 
     WHEN `UserAgent` LIKE '%Opera%' THEN '<i class="fa fa-opera"></i> Opera' 
     WHEN `UserAgent` LIKE '%Outlook%' THEN 'Outlook' 
     ELSE 'Unknown' 
    END AS `Browser`, 
    CASE 
     WHEN `UserAgent` LIKE '%WOW64%' THEN '64 bit' 
     WHEN `UserAgent` LIKE '%x64%' THEN '64 bit' 
     ELSE '32 bit' 
    END AS `BitArchitecture` 
FROM `Logs` 
GROUP BY `Browser`; 
関連する問題