百分比值的计算

Calculation of percentage value

我想通过 sql 计算大于阈值的值的百分比,如 excel(COUNTIF/COUNT)

感谢帮助

您可以使用 avg()case:

select avg(case when a > 2 then 1.0 else 0 end)
from t;

另一个解决方案没有 AVG(),使用子查询。

运行 在这里: https://www.db-fiddle.com/f/pm4VyShqzNBMpceCzgzniZ/7

SELECT NumberOfValid, 
       NumberOfAll, 
       NumberOfValid/NumberOfAll AS "Ratio of Valid/All" 
FROM   (SELECT Count(*) AS NumberOfValid 
        FROM   test 
        WHERE  id < 9) AS subquery1, 
       (SELECT Count(*) AS NumberOfAll 
        FROM   test) AS subquery2; 

请注意此解决方案更复杂,但更灵活。 AVG() 将始终除以整个集合的 COUNT(),但是对于子查询,您可以完全控制。在这种情况下,AVG() 是完美的,但在其他情况下,可能需要子查询。