4

我在数据库中有一些数据(我正在通过 PHP 检索),如下所示:

+----------------------+
| Browser              |
+----------------------+
| Chrome 23.0.1271.97  |
| Chrome 24.0.1312.52  |
| Chrome 26.0.1410.64  |
| Chrome 25.0.1364.172 |
| Chrome 25.0.1364.152 |
| Safari 8536.25       |
| Internet Explorer 8.0|
| Mozilla 5.0          |
| Internet Explorer 7.0|

SELECT如果可能的话,我希望能够做的是COUNTGROUP BY浏览器类型,无论版本号是否不同,以便理想的输出是:

| Browser           | Count |
+-------------------+-------+
| Chrome            |   29  |
| Safari            |   15  |
| Internet Explorer |   45  |
| Mozilla           |   20  |

我已经尝试了各种不同的 SQL 命令搜索,我可能忽略或不知道是否可以从数据库中获取结果,而无需事后在 PHP 中对结果进行分组和计数,但到目前为止我所能得到的只是按版本号分组和计数的不同浏览器。

如果不可能,使用 MySQL/PHP 执行此操作的最佳方法是什么?

4

4 回答 4

4
SELECT 
SUBSTRING_INDEX(browser,' ',1) as browser, 
count(SUBSTRING_INDEX(browser,' ',1)) as count 
FROM browsers
GROUP BY SUBSTRING_INDEX(browser,' ',1)
于 2013-06-03T11:19:18.367 回答
2

您可以按 的子字符串进行分组browser,只需使用列中的第一个单词。我能想到的唯一问题是Internet explorer将返回为Internet.

SELECT SUBSTRING_INDEX(browser,' ',1) as browser, 
       COUNT( SUBSTRING_INDEX(browser,' ',1) ) as count 
FROM table_name
GROUP BY SUBSTRING_INDEX(browser,' ',1)
于 2013-06-03T11:15:57.057 回答
2

尝试这个

SELECT substring_index(browser,'',1),count(browser) as count
FROM table_name
GROUP BY browser 
于 2013-06-03T11:24:24.563 回答
2

这个脚本将工作它经过测试!

SELECT SUBSTRING_INDEX( Browser, ' ', 1 ) AS browser, count( id ) as count
FROM `table_name`
GROUP BY Browser
于 2013-06-03T11:27:11.453 回答