sql - SQL表中的条件百分比列
问题描述
我想添加一个显示分数百分比值的列,其中每条记录的分数除以其所在类别的分数总和。因此,新列中的值应该是 0.6、0.4、0.3 和 0.7。
Id Category Score
1 foo 6
2 foo 4
3 bar 30
4 bar 70
我能想到的最好的办法是创建一个临时表,使用 GROUP BY 为 Score 创建总和值,然后将其加入主表。有没有更有效的方法来做到这一点?
解决方案
您也可以在不创建临时表的情况下执行此操作。
SELECT A.* , CAST(Score*1.0/TotalScore AS DECIMAL(6,2))
FROM [table1] A
JOIN (
SELECT Category
,SUM(Score) TotalScore
FROM [table1]
GROUP BY Category
) B
ON A.Category = B.Category
推荐阅读
- jquery - 响应式图片库 - 缩略图的网格问题
- powershell - 如何在 Jenkins 构建中检测 NuGet 包中的错误?
- javascript - 无法获取/nodeJS 问题,为什么我会收到此消息?
- jenkins - Jenkins 管道 - 自定义超时行为
- bash - 将绝对符号链接转换为相对符号链接
- angular - Angular/NGRX 中断输出
- python - 如何将我的条形码输出打印到文件中?
- redis - Redis 集群实时重新分片失败
- python - PyQt 使用 QT 远程对象
- java - spring boot jpa manyToOne(column="fatherId") join同一个实体以递归方式工作,直到fatherId为null