Мне нужно собрать общее количество билетов, созданных за смену, вместе с промежуточным итогом. У меня есть существующий запрос, который я считаю правильным, но после проверки кажется, что он вытягивает неправильные числа.
SELECT
TO_CHAR(TRUNC(DTTM,'Y'),'YYYY') as "DATE"
,COUNT(CASE WHEN TO_CHAR(DTTM, 'HH24:MI') BETWEEN '14:00' AND '22:00' THEN TKTNUM ELSE NULL END) AS "DAYS"
,COUNT(CASE WHEN TO_CHAR(DTTM, 'HH24:MI') BETWEEN '06:00' AND '14:00' THEN TKTNUM ELSE NULL END) AS "MIDS"
,COUNT(CASE WHEN TO_CHAR(DTTM, 'HH24:MI') NOT BETWEEN '06:00' AND '22:00' THEN TKTNUM ELSE NULL END) AS "SWINGS"
,COUNT(TKTNUM) "TOTAL"
,SUM(COUNT(TKTNUM)) OVER (ORDER BY (TRUNC(E.ESCDTTM,'Y'),'YYYY')) -- c/o Littlefoot and Stew Ashton
FROM TKTCHISTORY
GROUP BY TRUNC(E.ESCDTTM,'Y')
ORDER BY TRUNC(E.ESCDTTM,'Y')
SAMPLE DATA:
TKTNUM TKT_CREATED
INC0001 01/10/2019 1:00
INC0002 01/10/2019 23:00
INC0003 03/10/2019 5:00
INC0004 03/10/2019 9:20
INC0005 05/11/2019 15:00
DESIRED OUTPUT:
DATE DAYS MIDS SWINGS TOTAL
2019-08-01 8 13 1 22 22
2019-08-02 19 5 3 27 49
2019-08-03 23 6 6 35 84
2019-08-04 7 9 13 29 113
2019-08-05 4 17 2 23 136
2019-08-06 10 5 16 31 167
2019-08-07 3 12 11 26 193
«SWINGS» будет получать билеты с 00:00 до 06:00 или с 22:00 до 24:00 в тот же день. Например, билет был сгенерирован 02 ноября 01:00 ... когда я получу отчет, он будет засчитан 02 ноября для SWINGS, когда он должен быть для 01 ноября.
Iпридумал что-то, что, вероятно, помогло бы с логикой, но я не уверен на 100%.
WITH Shift_Sched (shiftdate,shiftsched) as
(
SELECT
--sysdate
CASE
WHEN TO_CHAR(TRUNC(sysdate,'MI'),'HH24:MI') BETWEEN '06:00' AND '23:59' THEN TRUNC(sysdate,'DD')
WHEN TO_CHAR(TRUNC(sysdate,'MI'),'HH24:MI') BETWEEN '00:00' AND '05:59' THEN TRUNC(sysdate -1,'DD')
END as "SHIFT DATE",
CASE
WHEN TO_CHAR(TRUNC(sysdate,'MI'),'HH24:MI') BETWEEN '06:00' AND '14:00' THEN 'MIDS'
WHEN TO_CHAR(TRUNC(sysdate,'MI'),'HH24:MI') BETWEEN '14:00' AND '22:00' THEN 'DAYS'
ELSE 'SWINGS'
END as "SHIFT SCHED"
FROM DUAL
)
SELECT shiftdate,shiftsched,COUNT(shiftsched)
FROM shift_sched
GROUP by shiftdate,shiftsched
Любая помощь будет принята с благодарностью