【问题标题】:count and aggregated list joining tables计数和聚合列表连接表
【发布时间】:2017-11-17 23:50:51
【问题描述】:

我需要一些关于 sql 的帮助,数据如下所示。

table A (a1, a2, a3)
table B (b1, b2)

A.a1 和 B.b1 相互引用。我想要的是对于唯一的B.b1,我想得到A.a2,它可以通过引用A.a1来获得多条记录。 例如,

A
v1, v2, v3
v1, v4, v5
v1, v3, v6
v2, v7, v8

B
v1, v9
v2, v10
v1, v11

我想得到如下结果,包括计数和聚合字符串。

v1, 3, (v2,v4,v3)
v2, 1, (v7)

我认为这并不复杂,对我来说似乎需要一些时间 :) 如果有人熟悉这个,请给一些建议。

【问题讨论】:

  • 其实很简单。看看你自己能不能做到。步骤是:先加入;然后 GROUP BY B.b1,并在聚合中(在 SELECT 中)使用函数 COUNT()LISTAGG()话虽如此:您的 Oracle 版本是什么? LISTAGG() 自 Oracle 11.2 以来才出现。如果您不知道自己的版本,请运行select * from v$version

标签: sql oracle join count aggregate


【解决方案1】:

试试这个:

select data.a1,
count(data.a1) as count,
LISTAGG(data.a2,',') WITHIN GROUP(order by data.a2 desc) as third_column from
(select A.a1,A.a2 from A where A.a1 in (select DISTINCT B.b1 from B )) data
 group by data.a1;

【讨论】:

  • 原来很复杂 :) 效果很好,非常感谢。
猜你喜欢
  • 2021-07-03
  • 2022-11-30
  • 1970-01-01
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多