我有命令:
SELECT
number_of_pairs,
COUNT(*) --/(SUM(COUNT)) AS Percentage
FROM result
WHERE number_of_pairs!= 'NULL'
GROUP BY 1;
结果为:
但是我的目标不是知道每个组的数量,而是每个组相对于总数的百分比。我尝试过:
COUNT(*)/(SUM(COUNT)) AS Percentage
但不返回任何内容。
我想在第一行中获得379/(379+371)=0.505
,在第二行中获得371/(379+371)=...
SQLite版本:3.11.0
您可以使用SUM()
窗口功能获取总计:
SELECT
number_of_pairs,
1.0 * COUNT(*) / SUM(COUNT(*)) OVER() AS Percentage
FROM result
WHERE number_of_pairs <> 'NULL'
GROUP BY number_of_pairs;
除非在列'NULL'
中实际上有number_of_pairs
作为字符串文字,否则必须将条件更改为:
number_of_pairs IS NOT NULL
对于不支持窗口功能的旧版SQLite:
SELECT
r.number_of_pairs,
1.0 * COUNT(*) / MAX(t.counter) AS Percentage
FROM result r
CROSS JOIN (SELECT COUNT(*) counter FROM result WHERE number_of_pairs <> 'NULL') t
WHERE r.number_of_pairs <> 'NULL'
GROUP BY r.number_of_pairs;
请参阅简化的demo。