Resku 示範資料

策略 / #7

花費暴衝異常 · 偵測

最新一天的花費明顯高於平常水準就提醒你,只通知不動手。

數字小者,衝突時優先
編輯 SQL

提醒

campaign_idnamespend_todayavg_spendz_score
4露營折疊椅・季節441415524.75

SQL

WITH spend AS (
  SELECT campaign_id, ts, value FROM observations WHERE metric='spend'
),
stats AS (   -- 基準排除「今天」,暴衝那天才不會稀釋自己的標準差
  SELECT s.campaign_id, AVG(s.value) AS mu,
         SQRT(AVG(s.value*s.value) - AVG(s.value)*AVG(s.value)) AS sigma
  FROM spend s
  WHERE s.ts < (SELECT MAX(ts) FROM spend WHERE campaign_id = s.campaign_id)
  GROUP BY s.campaign_id
),
latest AS (
  SELECT s.campaign_id, s.value AS today
  FROM spend s
  WHERE s.ts = (SELECT MAX(ts) FROM spend WHERE campaign_id = s.campaign_id)
)
SELECT c.id AS campaign_id, c.name,
       ROUND(l.today,0) AS spend_today, ROUND(st.mu,0) AS avg_spend,
       ROUND((l.today - st.mu)/st.sigma, 2) AS z_score
FROM latest l
JOIN stats st    ON st.campaign_id = l.campaign_id
JOIN campaigns c ON c.id = l.campaign_id
WHERE (l.today - st.mu)/st.sigma > 2.5
ORDER BY z_score DESC;