[英]PHP MySQL: COUNT/SUM a non integer column with different values
我的桌子看起來像這樣:
ID | click | time | browser
1 1 [01:00:00] FireFox
2 1 [01:00:00] FireFox
3 0 [01:00:00] Opera
4 1 [02:00:00] FireFox
5 1 [02:00:00] Chrome
6 1 [02:00:00] Chrome
因此輸出應為:
01:00:00
Total hits: 3
Clicks: 2
FireFox: 2
Opera: 1
02:00:00
Total hits: 3
Clicks: 3
FireFox: 1
Chrome: 2
我知道如何在沒有瀏覽器的情況下獲取此信息:
SELECT SUM(click) AS click, COUNT(*), HOUR(time)
FROM hits
WHERE time >= DATE_SUB(NOW(),INTERVAL 24 HOUR) GROUP BY HOUR(time)
但是我不知道該用瀏覽器輸出。 我根本不在乎瀏覽器是否會被分組,並且得到如下輸出:
01:00:00
Total hits: 3
Clicks: 2
02:00:00
Total hits: 3
Clicks: 3
-----------
FireFox: 3
Chrome: 2
Opera: 1
您可以使用IF
:
SELECT SUM(`click`) AS click
, COUNT(*)
, HOUR(`time`)
, COUNT(IF( `browser` = 'Chrome', `browser`, null)) AS `Chrome`
, COUNT(IF( `browser` = 'Opera', `browser`, null)) AS `Opera`
, COUNT(IF( `browser` = 'FireFox', `browser`, null)) AS 'FireFox'
FROM `hits`
WHERE `time` >= DATE_SUB(NOW(),INTERVAL 24 HOUR)
GROUP BY HOUR(`time`)
或CASE
:
SELECT SUM(`click`) AS click
, COUNT(*)
, HOUR(`time`)
, COUNT(CASE WHEN `browser` = 'Chrome' THEN `browser` END) AS `Chrome`
, COUNT(CASE WHEN `browser` = 'Opera' THEN `browser` END) AS `Opera`
, COUNT(CASE WHEN `browser` = 'FireFox' THEN `browser` END) AS 'FireFox'
FROM `hits`
WHERE `time` >= DATE_SUB(NOW(),INTERVAL 24 HOUR)
GROUP BY HOUR(`time`)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.