You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写SQL查询统计价格高于$500的数据占比?

解决价格高于$500的数据占比统计问题

你的原查询问题出在**GROUP BY price**上——它会把每个不同的价格单独分组计算占比,返回的是每个价格对应的记录数在总数据中的比例,而不是你想要的「所有价格高于$500的记录占总记录的比例」。

这里有两种简单直接的正确写法:

方法1:使用CASE表达式求和

SELECT 
  (SUM(CASE WHEN price > 500 THEN 1 ELSE 0 END) * 100.0 / COUNT(*)) AS percentage_over_500
FROM items;
  • SUM(CASE WHEN price > 500 THEN 1 ELSE 0 END):统计所有价格高于500的记录数量,满足条件记1,不满足记0,求和后就是符合条件的总数。
  • 乘以100.0是为了确保计算时用浮点数除法,避免整数除法导致的精度丢失(比如如果用整数计算,1/2会得到0,而不是50.0)。
  • COUNT(*)获取表中总记录数,两者相除再乘100就得到占比百分比。

方法2:利用COUNT忽略NULL的特性

SELECT 
  (COUNT(CASE WHEN price > 500 THEN 1 END) * 100.0 / COUNT(*)) AS percentage_over_500
FROM items;
  • COUNT(CASE WHEN price > 500 THEN 1 END):当价格高于500时返回1,否则返回NULL;COUNT函数会自动忽略NULL值,所以最终统计的就是符合条件的记录数。
  • 后续的除法逻辑和方法1一致,确保得到百分比结果。

这两种写法都不需要分组,直接对整个表进行计算,就能得到你想要的「价格高于$500的数据占比」啦。

内容的提问来源于stack exchange,提问作者Deef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:01:47