SELECT type,
COUNT(CASE value WHEN 0 THEN 1 END) / COUNT(*) * 100 AS percentage_of_0
FROM table_name
GROUP BY type
其中,对于示例数据:
CREATE TABLE table_name (type, value) AS
SELECT 'a', 1 FROM DUAL UNION ALL
SELECT 'a', 0 FROM DUAL UNION ALL
SELECT 'a', 1 FROM DUAL UNION ALL
SELECT 'a', 1 FROM DUAL UNION ALL
SELECT 'b', 0 FROM DUAL UNION ALL
SELECT 'b', 1 FROM DUAL UNION ALL
SELECT 'c', 1 FROM DUAL UNION ALL
SELECT 'c', 1 FROM DUAL;
2条答案
按热度按时间5lwkijsr1#
使用条件聚合:
其中,对于示例数据:
输出:
| 类型|占0的百分比|
| - ------|- ------|
| B|五十|
| (c)秘书长的报告|无|
| 项目a|二十五|
fiddle
u1ehiz5o2#
如果
0
和1
是仅有的两个可能的值,则可以使用聚合和算术,如下所示:如果有更多可能的值,并且您需要
0
值的百分比,那么我建议使用avg()
和case
表达式: