sql - 如何添加另一列来计算 SQL 中所选表的某些列的总比例?
问题描述
我正在使用来自 AdventureWorks2017 模式的名为 HumanResources.Employee 的表。它显示如下:
.
在 16 个专栏中,我关注的是 OrganizationLevel 和 JobTitle。然后我统计具有相同组织级别和职位的人数并选择一个新表:
SELECT
OrganizationLevel,
JobTitle,
COUNT(*) AS Counts
FROM HumanResources.Employee AS tb1
GROUP BY
OrganizationLevel,
JobTitle;
结果是:
我想要的是在此表中添加一列(tb1)。在新列中是比例。
我试过这个:
SELECT *, tb1.Counts / SUM(tb1.Counts)
FROM
(
SELECT OrganizationLevel, JobTitle, COUNT(*) as Counts
FROM HumanResources.Employee AS tb1
GROUP BY OrganizationLevel, JobTitle
)
但是,错误消息显示:
消息 102,第 15 级,状态 1,第 1 行
什么是正确的命令?谢谢!
解决方案
您想为此使用窗口函数。基本上,您需要对所有行的计数求和:
SELECT OrganizationLevel, JobTitle,
COUNT(*) AS Counts,
100.0 * COUNT(*) / SUM(COUNT(*)) OVER ()
FROM HumanResources.Employee e
GROUP BY OrganizationLevel, JobTitle;
推荐阅读
- python - 在所有模块中为火炬、随机数和 numpy 设置相同的种子
- python - Python 单元测试和断言方法
- java - 在编码方面是全新的,我无法找出为什么我的循环跳过了我的扫描仪功能
- kotlin - 如何编写 Kotlin 代码来存储从 7 到 101 的所有奇数并打印它们的总和?
- javascript - 有没有办法在运行时通过使用模式中的选择器在 A-Frame 中设置“gltf-model”或“obj-model”?
- r - 为什么变异函数不生成变量?
- python - 使用队列作为相机输入的 Python 多处理
- r - 如何将一列中的 2 个日期拆分为 R 中的 2 列
- javascript - Mongoose - 使用 find() 查询文档,其中嵌套数组值的总和在一定范围内
- javascript - 如何抓取多个 URL 和标题并将其保存到我的数据库中,其中每个 URL 都与标题匹配?