【问题标题】:how to avoid unique columns in group by?如何避免 group by 中的唯一列?
【发布时间】:2021-02-25 05:51:57
【问题描述】:

我正在尝试执行此查询

Select ps.id,count(ps.id) as idCount,p.date 
from table1 p
join table2 PS on p.fq = PS.fq 
group by ps.id,p.date

得到这样的结果

XYZ11   1   2020-10-23 12:26:35
XYZ11   1   2020-11-05 15:55:20
ABC00   1   2020-11-04 17:56:42
ABC00   1   2020-10-23 12:26:35

但不是这个,我想要我的结果

XYZ11   2 date?
ABC00   2

但我也想包含日期,因为这些是唯一值,所以我如何在 group by 中避免这种情况。

【问题讨论】:

  • 您的示例中没有任何内容显示“投诉 id”的值来自何处!?您只有“站点 ID”和“投诉日期”。
  • 抱歉我说的是投诉日期
  • 但是你想要哪个日期,因为有多种选择?
  • 如果我能在不同的列中看到它们,那就太好了

标签: sql count db2 inner-join aggregate-functions


【解决方案1】:

要显示所有日期,您可以使用 DB2 中的 LISTAGG 聚合函数。这将使用指定的分隔符将日期连接到一个列中。

SELECT ps.id, COUNT(ps.id) AS idCount, LISTAGG(p.date, ',') AS Dates
FROM table1 p
JOIN table2 ps ON p.fq = ps.fq 
GROUP by ps.id

【讨论】:

    【解决方案2】:

    您似乎只想从 selectgroup by 子句中删除日期:

    select ps.id, count(*) as idcount
    from table1 p
    join table2 ps on p.fq = ps.fq
    group by ps.id
    

    这为每个 id 提供一行,以及每组中的行数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 2021-11-30
      相关资源
      最近更新 更多