2012-05-12 2 views
2

У меня есть таблица с каждой строкой, содержащая данные о загрузке страницы пользователем. Одним из полей является пользовательский агент для этого удара. Как я могу группировать результаты в браузере? Я группа общих пользовательских агентов:Групповые пользовательские агенты браузером

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

Но я хочу, чтобы сгруппировать в браузере, независимо от версии или других данных, что изменения. Я бы хотел, чтобы он выводил список, в котором перечислены браузеры, насколько они распространены.

Как я могу это сделать?

ответ

0

см. Функцию get_browser() php для ее идентификации из строки пользовательского агента. Вам нужно будет перебрать все строки пользовательского агента, подсчитывая результаты каждого из них.

0

Два подхода приходит на ум.

1) Добавьте столбец, в котором хранится только имя браузера. Это упростит группировку браузером за счет увеличения размера таблицы. Вы можете использовать функцию get_browser(), предложенную Крисом.

2) Результаты запроса для каждого браузера индивидуально с использованием запроса REGEXP или LIKE (LIKE «% chrome /%»), а затем объединяйте результаты вместе. Это не потребует дополнительного пространства, но это делает ваш запрос более проблематичным.

1

Вы можете найти инструкцию SQL (MySQL и SQL Server) для сортировки пользовательского агента/версии на group http user agent sql. Он основан на RegExp и переключает регистр SQL из популярных браузеров.

1

Я нашел полезным использовать MySQL CASE для анализа браузера, операционной системы и битовой архитектуры. Данные ($ _SERVER ['HTTP_USER_AGENT']) были вставлены через PHP в таблицу MySQL. Возможно, вы найдете следующий код полезным. Он также отображает некоторые значки шрифта Awesome в зависимости от UserAgent.

ВЫБОР под группами под псевдонимом браузера. То же самое можно сделать и для 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`; 
Смежные вопросы