簡體   English   中英

PHP MySQL:COUNT / SUM一個具有不同值的非整數列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM