【问题标题】:SQL Count per hour for all DTM values所有 DTM 值的每小时 SQL 计数
【发布时间】:2019-10-28 17:03:10
【问题描述】:

我有一个现有的具有 Oracle DTM 格式的值范围,例如 22-NOV-18 12.20.45.430838000

我的目标是在整个值范围内每小时进行一次计数。我想要计算不同日期的所有唯一值。

这被证明是困难的,因为提取函数只能从字段中提取 1 个日期类型,而我需要多个值。

我能够编写以下查询,它为我提供了整个范围内每天的计数。

select trunc(created_dtm), count(*) CreatedCount from

(select ord.order_id, ordser.service_id, ord.product_type, ord.created_dtm ,ord.last_modified_dtm from SCADRON_OWNER.orders ord, SCADRON_OWNER.order_subtype os, SCADRON_OWNER.order_services ordser where ord.order_id = os.order_id and ordser.order_id = ord.order_id and os.subtype = 'FttcActiveLineTakeoverUpgrade' and ord.order_status
= 'Completed' )

group by trunc(created_dtm) order by trunc(created_dtm);

产生这样的结果:

但是,我想对此进行改进,以便我可以计算每小时的所有值,有没有简单的方法可以做到这一点?

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    我想你想要:

    select cast(trunc(created_dtm, 'hh') as timestamp),
           count(*)
    from SCADRON_OWNER.orders ord join
         SCADRON_OWNER.order_subtype os
         on ord.order_id = os.order_id join
         SCADRON_OWNER.order_services ordser 
         on ordser.order_id = ord.order_id 
    where os.subtype = 'FttcActiveLineTakeoverUpgrade' and 
          ord.order_status = 'Completed' 
    group by cast(trunc(created_dtm, 'hh') as timestamp)
    order by min(created_dtm);
    

    这会将值转换为时间戳,以便您查看。或者,转换为字符串:

    select to_char(created_dtm, 'YYYY-MM-DD HH24') || ':00:00',
           count(*)
    from SCADRON_OWNER.orders ord join
         SCADRON_OWNER.order_subtype os
         on ord.order_id = os.order_id join
         SCADRON_OWNER.order_services ordser 
         on ordser.order_id = ord.order_id 
    where os.subtype = 'FttcActiveLineTakeoverUpgrade' and 
          ord.order_status = 'Completed' 
    group by to_char(created_dtm, 'YYYY-MM-DD HH24')
    order by min(created_dtm);
    

    【讨论】:

    • 这很好用@GordonLinoff。第二个查询有效,而第一个查询出现“ORA-00979: not a group by expression”的错误。
    猜你喜欢
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多