【问题标题】:SQL SUM DATA by HourSQL SUM DATA 按小时
【发布时间】:2013-11-01 15:44:22
【问题描述】:

我有 3 列

ID
TIMESTAMP
CALLS

我需要按小时汇总通话次数。 例子

ID         TIMESTAMP          CALLS
1     10-01-2013 01:00:23       23
2     10-01-2013 03:00:23       55
3     10-01-2013 05:00:23       2369
4     10-01-2013 04:00:23       12
5     10-01-2013 01:00:23       1
6     10-01-2013 12:00:23       99
7     10-01-2013 01:00:23       22
8     10-01-2013 02:00:23       3

输出结果应该类似于

 TimestampHOUR       Totalcalls
  10/1/2013 01:00       46
  10/1/2013 02:00       3
  10/1/2013 03:00       55
  10/1/2013 04:00       12
  10/1/2013 05:00       2369
  10/1/2013 11:00       99

我已经尝试过使用 datepart,hour(timestamp) 但我猜我的 oracle 版本不支持它。

【问题讨论】:

    标签: sql oracle oracle11g timestamp


    【解决方案1】:
    SELECT   TRUNC(timestamp, 'HH24') AS hour, COUNT(*) AS TotalCalls
    FROM     some_table
    GROUP BY TRUNC(timestamp, 'HH24')
    

    【讨论】:

    • 我收到错误 ORA-01898: too many precision specifiers 第 3 行。
    • @user206168,是的,您应该将'DD/MM/YYYY hh24' 更改为'hh24' 或简单地更改为'hh'
    • @Mureinik 我有一个问题。你看到我没有 06:00 到 10:00 PM 的数据了吗?无论如何也显示这些时间并将计数显示为0?
    【解决方案2】:

    您应该将日期时间缩短为小时,然后进行分组。示例四舍五入到小时:

    select TRUNC (sysdate,'hh') from dual
    

    see results

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-16
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      相关资源
      最近更新 更多