简体   繁体   English

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

[英]PHP MySQL: COUNT/SUM a non integer column with different values

My table looks like this: 我的桌子看起来像这样:

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

So output should be: 因此输出应为:

01:00:00
Total hits: 3
Clicks: 2
FireFox: 2
Opera: 1

02:00:00
Total hits: 3
Clicks: 3
FireFox: 1
Chrome: 2

I know how to get this without Browser: 我知道如何在没有浏览器的情况下获取此信息:

SELECT SUM(click) AS click, COUNT(*), HOUR(time) 
FROM hits 
WHERE time >= DATE_SUB(NOW(),INTERVAL 24 HOUR) GROUP BY HOUR(time)

But I don't know to ouput this with browser. 但是我不知道该用浏览器输出。 I wouldn't mind at all if browser would not be grouped and I get a output like this: 我根本不在乎浏览器是否会被分组,并且得到如下输出:

01:00:00
Total hits: 3
Clicks: 2

02:00:00
Total hits: 3
Clicks: 3
-----------

FireFox: 3
Chrome: 2
Opera: 1

You can use IF : 您可以使用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`)

or CASE : 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