sql - 如何为同一行中的一组 EmpId 显示“值”[列]和“所有此类值的总和”[行方式]
问题描述
如何为同一行中的一组 EmpId 显示“值”[列]和“所有此类值的总和”[行方式]。
SELECT ID, SUM(VALUE1), SUM(VALUE2)
GROUP BY EmpID
上面的查询将返回总和,但我也想在同一行中显示 Value1 和 Value2 的值。
例如
我有以下输入表:
EmpID VALUE1 VALUE2
==================
1 1 5
1 2 6
2 3 7
2 4 8
我想要以下输出表(按 EmpID 分组)-> Value1、Value2 及其总和在同一行中
EmpID Value1 VALUE2 total_Value1 total_Value2
===============================================
1 1 5 3 11
1 2 6 3 11
2 3 7 7 15
2 4 8 7 15
解决方案
使用SUM() OVER(PARTITION BY)
窗口函数,您可以获得预期的结果:
SELECT EmpID, VALUE1, VALUE2,
SUM(VALUE1) OVER (PARTITION BY EmpID) AS total_Value1,
SUM(VALUE2) OVER (PARTITION BY EmpID) AS total_Value2
FROM TableName
推荐阅读
- sql - 使用参数更新表
- dask - 从任务中获取 Dask 工作人员的 ID
- python - 在python中使用枚举时无法迭代到多个列表
- r - R工具gageRR响应输入不清楚
- jenkins - 有没有办法将长 Groovy execute() 命令的输出流式传输到控制台而不是等待它完成?
- python - Python Panda CSV 管理
- angular - 从 WebPack 迁移到 Angular-CLI 6
- jsf - 向下滚动并将更多数据加载到 ui:repeat
- awk - 并行化 awk 脚本 - 文件拆分
- sql-server - dbo.DataSource 表上的 ReportServer 数据库死锁