我在数据库中有一些数据(我正在通过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
,COUNT
和GROUP BY
浏览器类型,无论版本号是否不同,以便理想的输出是:
| Browser | Count |
+-------------------+-------+
| Chrome | 29 |
| Safari | 15 |
| Internet Explorer | 45 |
| Mozilla | 20 |
我已经尝试了各种搜索不同的SQL命令,我可能忽略或不知道是否可以从数据库中获取结果,而无需在PHP中对它们执行某些操作,然后对结果进行分组和计数,但到目前为止,我能得到的是不同的浏览器按其版本号分组和计算。
如果不可能,这是用MySQL / PHP做这个的最好方法吗?
答案 0 :(得分:4)
SELECT
SUBSTRING_INDEX(browser,' ',1) as browser,
count(SUBSTRING_INDEX(browser,' ',1)) as count
FROM browsers
GROUP BY SUBSTRING_INDEX(browser,' ',1)
答案 1 :(得分:2)
您可以使用browser
substring进行分组,只需使用列中的第一个单词即可。我能想到的唯一问题是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)
答案 2 :(得分:1)
试试这个
SELECT substring_index(browser,'',1),count(browser) as count
FROM table_name
GROUP BY browser
答案 3 :(得分:1)
此脚本将在测试中运行!
SELECT SUBSTRING_INDEX( Browser, ' ', 1 ) AS browser, count( id ) as count
FROM `table_name`
GROUP BY Browser