如何连续获得过去三个月的销售额?

问题描述

我有销售数据,我需要过滤谁(代理ID)在一个月的最后3天结束时完成了更多销售,完成了80%以上的销售(最后3天销售/特定月份的总销售),以及在过去的三个月中一直如此。

我尝试了以下查询,它仅满足了最近三天的销售量,超过了其余天的销售量,并且满足了特定月份((最近三天的销售量/特定月份的总销售量))的80%以上的销售量,但是我无法满足得到连续三个月完成的任务。

示例:一位代理商,他在过去3天的销售额比休息日的销售额要多,并且在7月的最后三天的销售额超过了80%,并在过去的三个月(7月,6月,5月)连续进行了销售

SELECT   a.agent_id,a.agent_name,a.ivr_registered_district,s.agent_type,s.district,s.province,a.parent_level1_id,a.parent_level1,a.sales_channel,TO_CHAR(Trunc(a.connection_date,'MONTH'),'MON-YYYY') AS MONTHYEAR,COUNT(
         CASE
         WHEN a.connection_date < Trunc( LAST_DAY( a.connection_date ) ) - INTERVAL '4' DAY
         THEN 1
         END
       ) AS not_last_5days_sale_count,COUNT(
         CASE
         WHEN a.connection_date >= Trunc( LAST_DAY( a.connection_date ) ) - INTERVAL '4' DAY
         THEN 1
         END
       ) AS last_5days_sale_count,COUNT(
         CASE
         WHEN a.connection_date >= Trunc( LAST_DAY( a.connection_date ) ) - INTERVAL '4' DAY
         THEN 1
         END
       ) /  
      ( COUNT(
         CASE
         WHEN a.connection_date < Trunc( LAST_DAY( a.connection_date ) ) - INTERVAL '4' DAY
         THEN 1
         END
       ) +
       COUNT(
         CASE
         WHEN a.connection_date >= Trunc( LAST_DAY( a.connection_date ) ) - INTERVAL '4' DAY
         THEN 1
         END
       )) as percentage
FROM   EDW_TGT.FACT_LTE_SALES_CHANNELS a
JOIN SFA.sfa_agent_dtl s
ON a.agent_id = s.agent_id
where a.pre_post = 'LTE-PREPAID' and a.sales_channel in ('BUSInesS PARTNER','INSTITUSIONAL','REGIONAL TradE PARTNERS','disTRIBUTOR')
     --and  a.connection_date BETWEEN TO_DATE('2020-07-01 00:00:0','YYYY-MM-DD HH24:MI:SS') and TO_DATE('2020-07-31 23:59:59','YYYY-MM-DD HH24:MI:SS') 
     and a.connection_date < ADD_MONTHS(SYSDATE,-2)
GROUP BY a.agent_id,'MON-YYYY')
HAVING COUNT(
         CASE
         WHEN a.connection_date > Trunc( LAST_DAY( a.connection_date ) ) - INTERVAL '4' DAY
         THEN 1
         END ) >
        COUNT(
         CASE
         WHEN a.connection_date < Trunc( LAST_DAY( a.connection_date ) ) - INTERVAL '4' DAY
         THEN 1
         END
       )
        
       AND  
       
       COUNT(
         CASE
         WHEN a.connection_date >= Trunc( LAST_DAY( a.connection_date ) ) - INTERVAL '4' DAY
         THEN 1
         END
       ) >=3
       
      AND

        COUNT(
         CASE
         WHEN a.connection_date >= Trunc( LAST_DAY( a.connection_date ) ) - INTERVAL '4' DAY
         THEN 1
         END
       ) /  
      ( COUNT(
         CASE
         WHEN a.connection_date < Trunc( LAST_DAY( a.connection_date ) ) - INTERVAL '4' DAY
         THEN 1
         END
       ) +
       COUNT(
         CASE
         WHEN a.connection_date >= Trunc( LAST_DAY( a.connection_date ) ) - INTERVAL '4' DAY
         THEN 1
         END
       )) > 0.79

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)