如何解决如何连续获得过去三个月的销售额?
我有销售数据,我需要过滤谁(代理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 举报,一经查实,本站将立刻删除。