Oracle – how to make a query based on a shift schedule (day / middle / swings)

I have an existing query that I thought was correct, but after reviewing it seems to pull the wrong numbers

    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')

"SWINGS" draws tickets between 00:00 and 06:00 or 22:00 and 24:00 on the same day. For example, a ticket was created on 02 November at 01:00. If I pull the report, it will be counted for SWINGS on November 2nd if it is to apply for service on November 1st.

I came up with something that would probably help, but I'm not 100% sure.

    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

Any help would be appreciated