计算A列中的不同值,并按B列分组

时间:2018-11-11 20:26:01

标签: mysql pivot

我有一个MySQL表,每一行代表一个在php中进行的curl请求。带有列名(ip,http_code,time_checked)

SELECT * 
FROM proxy_stastistics 
WHERE time_checked > UNIX_TIMESTAMP( NOW() - INTERVAL 24 HOUR )

我目前正在使用上述查询返回仅过去24小时内的记录,但是我想每个唯一IP地址仅返回一行,但是想在此时创建2个附加列,其中任何http_code = 200或http_code = 0作为增量列。

所以我会得到这样的东西

IP          | 200 | 0 | 404
192.168.0.1 | 100 | 5 | 1
192.168.0.2 | 84  | 3 | 0

编辑 在阅读完MySql数据透视表后,我能够创建以下查询来实现我想做的事情。

SELECT ip_address, 
       SUM(http_code = '200') AS http200, 
       SUM(http_code = '0')   AS http0, 
       SUM(http_code = '404') AS http404 
FROM   proxy_stastistics 
WHERE  time_checked > Unix_timestamp(Now() - interval 24 hour) 
GROUP  BY ip_address 

1 个答案:

答案 0 :(得分:-1)

如果我理解正确,则需要这样的东西:

const someLib = require('whatever)

您可以在这里看到正在工作的小提琴:

http://sqlfiddle.com/#!9/35df03/8