Подсчет диапазона дат вместо одного определенного дня - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь получить количество предупреждений, сгенерированных за финансовый месяц, а не за один день. В моем текущем коде я получил итоговый счет за день, но я хочу получить общий счет за финансовый месяц.

Я перепробовал все, что мне нужно сделать, чтобы изменить код ниже?

SELECT COUNT(DISTINCT
    CASE
        WHEN substr(from_utc_timestamp(act.created, 'America/New_York'), 0, 10) = '[End date]'
            THEN act.activity_uid
        ELSE NULL
    END) AS Total_Generated_on_SLA_Date
FROM contactcentre.s_evt_act AS act
WHERE 
    (
        substr(from_utc_timestamp(act.created, 'America/New_York'), 0, 10) = '[End date]'
        OR substr(from_utc_timestamp(act.todo_actl_end_dt, 'America/New_York'), 0, 10) = '[End date]'
    )
    AND x_low_assgn_queue = 'Cust Care Exceptions'
    AND NOT todo_cd = 'Call';

1 Ответ

0 голосов
/ 12 января 2019

Быстрое и грязное решение с минимальным изменением существующего запроса.

У вас уже есть сводный запрос, который усекает отметку времени act.created до его дня. Просто расширьте логику и обрежьте еще 3 символа, чтобы получить месяц. Отсюда:

SELECT COUNT(DISTINCT
    CASE
        WHEN substr(from_utc_timestamp(act.created, 'America/New_York'), 0, 7) = '[End month]'
            THEN act.activity_uid
        ELSE NULL
    END) AS Total_Generated_on_SLA_Date
FROM contactcentre.s_evt_act AS act
WHERE 
    (
        substr(from_utc_timestamp(act.created, 'America/New_York'), 0, 7) = '[End date]'
        OR substr(from_utc_timestamp(act.todo_actl_end_dt, 'America/New_York'), 0, 7) = '[End month]'
    )
    AND x_low_assgn_queue = 'Cust Care Exceptions'
    AND NOT todo_cd = 'Call';

[End month] может быть присвоено значение типа 2019-01.

...