mysql - 如何在单个查询中获得零件总数、通过零件数和失败零件数
问题描述
有一个表格,其中包含数量、插入日期和结果列。
Quantity || TIMESTAMP || RESULT
Sample 1 || 2019-01-28 18:21:04 || PASS
Sample 2 || 2019-01-30 18:21:04 || FAIL
等等
单个查询如何仅给出零件总数、通过计数和失败计数 GROUPED BY 日期?
解决方案
如果您使用的是 MySQL 5.x,那么使用多个子查询将是您的唯一选择。
select (select count(*) from Test ) as Total, passed.val, failed.val
from (select count(*) as val, tmstamp from Test where result = 'PASS' group by tmstamp) passed
, (select count(*) as val, tmstamp from Test where result = 'FAIL' group by tmstamp) failed
WHERE passed.tmstamp = failed.tmstamp;
如果您使用的是 MySQL8,您应该研究 CTE(通用表表达式)功能。
WITH Passed as (select count(*) as val, tmstamp from Test where result = 'PASS' group by tmstamp),
Failed as (select count(*) as val, tmstamp from Test where result = 'FAIL' group by tmstamp)
select (select count(*) from Test ) as Total, p.val, f.val
From Passed p
join Failed f on f.tmstamp = p.tmstamp
推荐阅读
- mapbox - 无论在 MapBox 中如何缩放,如何显示更多等高线
- javascript - 为什么 npm start 不起作用,react app 没有在浏览器中打开。react 和 npm 都不起作用?
- amazon-s3 - 看不到从 S3 返回的标头上的元数据
- xml - 如何在 XSLT 中拆分数据并存储在多个节点中
- python - 使用 pandas 操作数据时出错(以防数据丢失)
- java - 在 google colab 中上传文件
- c++ - 无法生成预期的输出
- splunk - 在 splunk 中将国旗表情符号注释到 3166 个国家/地区代码
- javascript - 导入 JSPDF:未捕获的 SyntaxError:无法在模块外使用 import 语句
- sql - SQL - 如何计算期初余额和期末余额