mysql - MYSQL 查询中的多个计数
问题描述
我想用两个不同的计数标准来计算一个特定的数据库列,这样我就可以计算一个百分比
例如让同样的数据库列称为延迟,列中的数据包含秒数。
我想计算延迟消息的数量 > 50 秒,但也要计算同一查询中延迟消息的总数(即 > 0 秒)
我当前查询 > 50 秒如下
select COUNT(*) from table WHERE date = 20180701 and CAST(Latency As Signed) > 50
我如何在同一个查询中包含 > 0 秒的计数?
解决方案
使用条件聚合:
SELECT
COUNT(CASE WHEN CAST(Latency As Signed) > 50 THEN 1 END) AS latency,
COUNT(CASE WHEN CAST(Latency As Signed) > 0 THEN 1 END) AS total,
100.0 * COUNT(CASE WHEN CAST(Latency As Signed) > 50 THEN 1 END) /
COUNT(CASE WHEN CAST(Latency As Signed) > 0 THEN 1 END) AS percentage
FROM table
WHERE date = 20180701;
推荐阅读
- ruby-on-rails - Rspec测试回调方法
- javascript - 我对 if/else 语句有多项选择,但由于功能验证,在我单击否后它不会进入下一个问题
- typescript - 三.js | 着色相交网格重新着色每个网格
- node.js - 我的博客评论功能的 React.js 代码有什么问题
- spring-boot - 你如何断言删除方法无效
- reactjs - Jest 应该只在预提交钩子的更改文件上运行
- nginx - 将 NGINX 连接到 redis 缓存不起作用
- php - 将分数转换为小数
- javascript - 悬停时可水平滚动的视频库
- javascript - 如何在 Shopify 的 Liquid 中隐藏或显示样本的单个单选按钮?