mysql - 计算 A 列中的不同值,按 B 列分组
问题描述
我有一个 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
解决方案
如果我理解正确,你需要这样的东西:
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
你可以在这里看到工作小提琴:
推荐阅读
- html - 相同的 css 在草图和浏览器中出现不同
- c - 如何在C中的整数数组中添加二次序列
- javascript - 来自 http 错误代码的错误描述 - react.js/javascript
- ruby-on-rails - 如何使用 Spree API 进行登录和注册功能?
- java - 如何从我的课程中获取课程以使用我的程序?
- r - 当数量更多时,ggplotly无法正常工作
- excel - 使用带有 if/else 语句的复选框的输入框调用函数
- go - 如何在 golang 中创建 .lock 文件并在退出前将其删除?
- c# - 在 asp.net 网站上,每个登录用户是否都有自己正在运行的源代码的实例“副本”?
- python - 羊驼数据对象不可下标