Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按B列分组计算A列中的不同值_Mysql_Pivot - Fatal编程技术网

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

Mysql 按B列分组计算A列中的不同值,mysql,pivot,Mysql,Pivot,我有一个MySQL表,每一行代表php中的一个curl请求。使用列名(ip、http代码、时间检查) 我现在使用上面的查询只返回过去24小时内所做的记录,但我希望每个唯一IP地址只返回一行,但同时创建两个额外的列,其中任何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 pi

我有一个MySQL表,每一行代表php中的一个curl请求。使用列名(ip、http代码、时间检查)

我现在使用上面的查询只返回过去24小时内所做的记录,但我希望每个唯一IP地址只返回一行,但同时创建两个额外的列,其中任何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 pivot表之后,我能够创建以下查询来实现我想要做的事情

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 

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

select  ip, 
        sum(if(http_code=200,1,0)) code200 , 
        sum(if(http_code=0,1,0)) code0,  
        sum(if(http_code=404,1,0)) code404 
from proxy_stastistics
where time_checked > UNIX_TIMESTAMP( NOW() - INTERVAL 24 HOUR )
group by ip
你可以在这里看到工作小提琴:


这种转换被称为旋转,在这里已经被询问和回答了很多次。链接重复主题的答案显示了如何在mysql中进行此转换。但是,请注意,在应用程序逻辑中进行此转换可能更有效。感谢您为我指明了正确的方向,我发现该线程非常有用,问题有时是知道要查找什么的术语。再次感谢你,我不知道为什么有人否决了我。代码工作正常。
select  ip, 
        sum(if(http_code=200,1,0)) code200 , 
        sum(if(http_code=0,1,0)) code0,  
        sum(if(http_code=404,1,0)) code404 
from proxy_stastistics
where time_checked > UNIX_TIMESTAMP( NOW() - INTERVAL 24 HOUR )
group by ip