【问题标题】:Group BY when having different timestamps - Oracle SQL具有不同时间戳时的 Group BY - Oracle SQL
【发布时间】:2020-07-09 09:06:50
【问题描述】:

所以我有如下屏幕截图所示的表格,我想根据每个组的每个月的值进行分组。 问题是我有不同的时间戳..这个专栏非常有必要。有什么办法:

  1. 避免在group by语句中添加?或
  2. 更改时间戳中的日期,这样所有日期都将像本月的第一天?或
  3. 从时间戳中提取季度,然后尝试在 group by 中使用?

谢谢

想要的输出

我正在使用的代码:

Select Name, Central, Group, Timestamp, Extract (year from Timestamp) as Year, Extract (month from Timestamp) 从表 1 Group BY Name, Central, Group, Timestamp

我无法从 Group BY 中删除 Timestamp .. 并且将 Year 和 Month 添加到 group by 不会改变任何事情

【问题讨论】:

  • 请分享预期的输出。
  • 你试过按 GRUPO 分组,to_char(TIMESTAMP, 'YYYY-MM') 吗?如果您的时间戳仅包含 20019 年,则可以使用提取方法。
  • 月份级别的GROUP BY 将删除时间戳详细信息。你的问题不清楚。您需要样本数据和期望的结果。

标签: sql oracle group-by


【解决方案1】:

所以我认为您需要结果集中的时间戳列,并且您不想按时间戳分组。我不知道您的列 TIMESTAMP 是什么数据类型,但为简单起见,我假设它是一个日期值。你可以这样做:

select grupo,year,month,min(timestamp)
  from <yourtable>
group by grupo, year,month
;

或者返回这个月的第一天:

select grupo,year,month,tunc(timestamp,'MM')
  from <yourtable>
group by grupo, year,month,tunc(timestamp,'MM')
;

当然你也可以这样做:

select grupo,year,month,min(trunc(timestamp,'MM'))
  from <yourtable>
group by grupo, year,month
;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    相关资源
    最近更新 更多