如何使用SQL计算两个计数的比值,统计价格低于10的玩具占比
实现方案
假设你的数据表名为toys,包含toy(玩具名称)和price(价格)两列,以下是兼容所有主流SQL数据库的通用写法:
SELECT (SUM(CASE WHEN price < 10 THEN 1 ELSE 0 END) * 100.0 / COUNT(*)) AS low_price_percentage FROM toys;
逻辑说明
SUM(CASE WHEN price < 10 THEN 1 ELSE 0 END)统计所有价格低于10的玩具总数量- 乘以
100.0而非整数100,是为了避免部分数据库的整数除法截断问题,保证结果返回浮点型的百分比数值 - 除以
COUNT(*)即全部玩具的总数量,最终得到占比
如果你使用的是PostgreSQL等支持FILTER语法的数据库,可以用更简洁的写法:
SELECT (COUNT(*) FILTER (WHERE price < 10) * 100.0 / COUNT(*)) AS low_price_percentage FROM toys;
运行结果
针对你提供的样例数据,上述语句返回结果为50.0,即符合条件的玩具占比为50%。
内容的提问来源于stack exchange,提问作者CWeeks
相关产品推荐
相关产品推荐

