SQL分组统计问题:计算Animals表各物种在3岁动物中的占比
解决方法:计算各物种在Age=3动物中的占比
别着急,折腾好几小时没搞定太正常了,咱们一步步把这个SQL问题捋清楚!
首先明确核心需求:先找到所有年龄为3的动物总数,再统计每个物种在这些动物里的数量,最后算出每个物种对应的占比。
直接上可用的SQL语句,逻辑已经验证过了:
SELECT Species, COUNT(*) AS Count_Age3, -- 统计该物种中Age=3的动物数量 ROUND((COUNT(*) * 100.0 / (SELECT COUNT(*) FROM Animals WHERE Age = 3)), 2) AS Percentage FROM Animals WHERE Age = 3 -- 只筛选年龄为3的记录 GROUP BY Species; -- 按物种分组计算
语句细节解释:
- 子查询
(SELECT COUNT(*) FROM Animals WHERE Age = 3):先算出所有Age=3的动物总数量,这是计算百分比的核心分母 - 外层查询先筛选出Age=3的所有记录,按
Species分组后统计每个组的动物数 ROUND(..., 2)是为了把百分比保留两位小数,让结果更直观(如果不需要保留小数,直接去掉这个函数就行)
用你提供的示例数据跑这个语句,最终结果会是这样:
| Species | Count_Age3 | Percentage |
|---|---|---|
| Dog | 1 | 50.00 |
| Cat | 1 | 50.00 |
完全匹配需求啦!如果还有其他疑问随时说~
内容的提问来源于stack exchange,提问作者755
相关产品推荐
相关产品推荐

