【问题标题】:How to count total amount of pending tickets for each day this week in oracle-sql?如何在 oracle-sql 中计算本周每天的待处理票的总数?
【发布时间】:2021-03-12 11:15:19
【问题描述】:

我想计算本周每一天的待处理票的总数。我一次只能得到它一天。我现在有这个查询:

    SELECT (n.TOTAL - v.TODAY) + d.GISTER AS GISTER
FROM 
(
    -- Counts yesterday
    SELECT

        COUNT(ID) AS Gister

    FROM FRESHDESK_API
    -- 4 = resolved 5 = closed 
    -- Both count as closed
    WHERE STATUS IN(4, 5)
    AND TRUNC(UPDATED_AT) = TRUNC(SYSDATE - 1)
) d
CROSS JOIN
(
    -- Total pending
    SELECT

        COUNT(ID) AS TOTAL

    FROM FRESHDESK_API
    -- 3 is pending
    WHERE STATUS IN(3) 
) n
CROSS JOIN
(
    -- Pending tickets today
    SELECT

        COUNT(ID) AS TODAY

    FROM FRESHDESK_API
    -- 3 is pending
    WHERE STATUS IN(3) 
    AND TRUNC(UPDATED_AT) = TRUNC(SYSDATE) 
) v

我想得到这样的结果:

+----------------------------------+---------+----------+  
|               day                |  pending_tickets   |            
+----------------------------------+---------+----------+  
| Monday                           | 20                 |  
| Tuesday                          | 22                 |  
| Wednesday                        | 25                 |  
| Thursday                         | 24                 |  
| Friday                           | 19                 |  
+----------------------------------+---------+----------+  

表格是这样的(将未使用的数据排除在外):

+----------------------------------+---------+----------+---------+-----------+----------+----------+
|               id                 |     created_at     |     updated_at      |       status        |
+----------------------------------+---------+----------+----------+----------+----------+----------+
|                                  |                    |                     |                     |
|                                  |                    |                     |                     |
|                                  |                    |                     |                     |
|                                  |                    |                     |                     |
|                                  |                    |                     |                     |
+----------------------------------+---------+----------+---------+-----------+---------+-----------+

【问题讨论】:

    标签: oracle oracle-sqldeveloper oracle-apex oracle-apex-20.1


    【解决方案1】:

    您可以使用left joingroup by,如下所示:

    Select to_char(tday.updated_at, 'day') as updated_at, 
           count(tday.id) - count(yday.id) as pending_tickets
      From FRESHDESK_API tday
      Left join FRESHDESK_API yday
           On trunc(tday.UPDATED_AT) = trunc(yday.UPDATED_AT - 1)
           And trunc(yday.UPDATED_AT + 1, 'iw') = trunc(sysdate, 'iw')
           And yday.status in (4,5)
     Where trunc(tday.UPDATED_AT, 'iw') = trunc(sysdate, 'iw')
       And tday.status = 3
    Group by to_char(tday.updated_at, 'day'), trunc(tday.updated_at)
    Order by trunc(tday.updated_at);
    

    【讨论】:

    • 这会给我当天设置为更新的金额,但我想查看当天待处理票的总数
    • 因为这仅显示当天被移动到此状态的票,但大多数票已经处于待处理状态,所以您如何计算这些票?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多