sql - SQL Listagg 作为额外的列
问题描述
我正在寻找聚合列的 Oracle SQL 查询,但将聚合添加为额外的列,而不是“真正”聚合行。所以我想得到完全相同的行数,并带有一个带有聚合值的额外列。下面的示例应该有助于说明我的意思。
起始表:
ID GIVEN_NAME LAST_NAME
11 CARL CLARKE
22 CARL CLARKE
33 CARL CLARKE
44 ANDREW JOHNSON
55 ANDREW JOHNSON
GIVEN_NAME 和 LAST_NAME 的常规 listagg(ID) 组会给我:
LISTAGG(ID) GIVEN_NAME LAST_NAME
112233 CARL CLARKE
4455 ANDREW JOHNSON
我想要的只是添加一个聚合列:
AGGREGATE ID GIVEN_NAME LAST_NAME
112233 11 CARL CLARKE
112233 22 CARL CLARKE
112233 33 CARL CLARKE
4455 44 ANDREW JOHNSON
4455 55 ANDREW JOHNSON
这甚至可能吗?谢谢!
解决方案
以解析形式使用 LISTAGG 函数(OVER(解析子句)):
select GIVEN_NAME, LAST_NAME,
LISTAGG(ID) WITHIN GROUP (ORDER BY ID) OVER (PARTITION BY department_id) as "AGGREGATE"
from SOMETABLE
另请参阅LISTAGG 文档中的分析示例
推荐阅读
- azure-devops - Azure Pipelines BizTalk - Microsoft 托管生成代理
- javascript - laravel ajax 表单和复选框
- puredata - 为什么数字和符号被冻结并且无法编辑它们?
- python - 无法安装 simple-crypt
- amazon-web-services - 尝试写入 SNS 时 Lambda 超时,如何在 Terraform 中解决此问题?
- tableau-api - 如何将相同的筛选器添加到 Tableau Server 中的多个数据源?
- c++ - 显示存储在文件中的所有数据显示额外数据,在 C++ 文件处理中使用循环
- android - 获取 EditText 最大文本区域
- .net - 在拖放系统的图片框和标签之间建立链接
- c++ - 在加载的 PowerPC 上使用 LibUnwind 引发 C++ 异常会设置随机浮点异常陷阱