Databricks SQL计算各质量等级总占比及组内通过/失败占比
Databricks SQL 质量分组状态占比统计方案
核心逻辑是通过条件聚合分别统计各质量组内不同状态的记录数,结合窗口函数计算全局占比,无需多表关联,执行效率高。
可直接运行的查询代码
SELECT Quality, ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER (), 2) AS PercentageTotal, ROUND(SUM(CASE WHEN Status = 'Passed' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) AS PercentagePassed, ROUND(SUM(CASE WHEN Status = 'Failed' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) AS PercentageFailed FROM test -- 若需统计指定日期数据,取消下方注释并替换日期值 -- WHERE RunDate = '2024-01-01' GROUP BY Quality ORDER BY PercentageTotal DESC;
逻辑说明
PercentageTotal:和原有查询逻辑一致,返回对应质量等级的表占全量测试表的比例。这里用窗口函数SUM(COUNT(*)) OVER ()直接获取全表总记录数,比单独写子查询计数执行效率更高。PercentagePassed:通过CASE WHEN筛选组内Status='Passed'的记录计数,除以当前质量组的总记录数,得到组内测试通过占比。PercentageFailed:和通过率逻辑一致,统计组内Status='Failed'的记录占比。- 外层
ROUND函数用于将结果保留2位小数,不需要可直接删除。
返回结果示例
| Quality | PercentageTotal | PercentagePassed | PercentageFailed |
|---|---|---|---|
| Silver | 64.00 | 99.00 | 1.00 |
| Bronze | 33.00 | 92.00 | 8.00 |
| Gold | 3.00 | 100.00 | 0.00 |
内容的提问来源于stack exchange,提问作者Shawn N
相关产品推荐
相关产品推荐

