Oracle SQL 语句 - 识别和计算唯一呼叫者

Oracle SQL Statement - Identify & Count Unique Callers

我希望对我们的电话呼叫数据进行一些改进 - 并且需要确定呼叫者是否是唯一的 - 如果他们在给定日期多次呼叫 (CALL_DATE) - 它标记为 1 值,如果只有一次 0 值。

关于如何修改现有声明以反映这一点,我有什么想法吗?

SELECT /*+ PARALLEL (4) */
A.CALL_ID,
A.CALL_DATE,
O.OT_OUTLET_CODE,
A.CALL_TIME,
TO_CHAR(TO_DATE(A.CALL_TIME, 'HH24:MI:SS')+A.TALK_TIME/(24*60*60),'HH24:MI:SS') "CALL_END_TIME",
A.TALK_TIME,
A.RING_TIME,
A.OUTCOME,
CASE WHEN A.TRANSFER_TO = '10000' THEN 1 ELSE 0 END AS "VOICEMAIL"
FROM
    OWBI.ODS_FACT_TIGER_TELEPHONY A,
    OWBI.WHS_DIM_CAL_DATE C,
    OWBI.WHS_DIM_OUTLET O
WHERE
                A.CALL_DATE = C.CD_DAY_DATE
        AND     A.WHS_DIM_OUTLET = O.DIMENSION_KEY
        AND     C.EY_YEAR_CODE IN       ('2019')
        AND     C.EW_WEEK_IN_YEAR IN    ('1')      --  **FILTER ON PREVIOUS BUSINESS WEEK NUMBER**

ORDER BY A.CALL_DATE DESC;

您所描述的听起来像是 分析 count(*) 函数的工作。

将此添加到 SELECT 子句中,不要更改任何其他内容:

case when count(*) over (partition by a.call_id, a.call_date) = 1 then 0
     else 1 end as unique_flag