Количество SQL в час для всех значений DTM - PullRequest
0 голосов
/ 28 октября 2019

У меня есть диапазон значений, который имеет формат 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);

, выдающий результаты в таком виде:

enter image description here

Однако я хотел бы уточнить это, чтобы у меня был счетчик для всех значений в час, есть ли простой способ сделать это?

1 Ответ

1 голос
/ 28 октября 2019

Я думаю, вы хотите:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...