簡體   English   中英

BigQuery:滾動每日計數訪問者的付款摘要

[英]BigQuery: Rolling daily count visitor's summary of payment

我有這個數據:

日期 visitor_id 總付款
2022-01-01 一種 20
2022-01-01 15
2022-01-01 C 20
2022-01-02 10
2022-01-02 25

我希望每天有 total_payment 等於或大於 20 美元的訪問者數量,話雖如此,我希望的結果是:

日期 計數訪問者
2022-01-01 2個
2022-01-02 4個

2022-01-01 是 2,因為只有 A 和 C 的付款超過 20 美元,但是在 2022-01-02 又增加了 2,因為 B 是 35 美元(總和),D 是 25 美元。

對此有任何可能的查詢嗎? 我希望我的描述很清楚。 先感謝您。

您可以使用此查詢作為解決方案。 首先,我計算每個用戶的累計付款。 然后,我找到每個用戶超過 20$ 累計付款的最短日期。 在最后一步,我計算每個最短日期的用戶數,並累加該數字。 在 output 中,您不必有 first_day_users 列,但我保留它是為了更容易理解代碼。

所以 output 看起來像這樣: 在此處輸入圖像描述

WITH 
data AS(
  SELECT "2022-01-01" AS date, "A" AS visitor_id, 20 AS total_payment UNION ALL
  SELECT "2022-01-01" AS date, "B" AS visitor_id, 15 AS total_payment UNION ALL
  SELECT "2022-01-01" AS date, "C" AS visitor_id, 20 AS total_payment UNION ALL
  SELECT "2022-01-02" AS date, "B" AS visitor_id, 10 AS total_payment UNION ALL
  SELECT "2022-01-02" AS date, "D" AS visitor_id, 25 AS total_payment
),
user_cumulatives as 
(
    SELECT
        visitor_id,
        date,
        SUM(total_payment) OVER (PARTITION BY visitor_id ORDER BY date) as cumulative_payment
    FROM data
),
user_first_dates as 
(
    select visitor_id, min(date) as date
    from user_cumulatives
    where cumulative_payment >= 20
    group by 1
)
select date, count(*) as first_day_users, sum(count(*)) over (order by date) as count_visitor
from user_first_dates
group by 1
order by date

歡迎@Indri

下面的查詢將為您提供每天的行總和,其中total_amount大於等於 20,我相信這應該會給您您正在尋找的答案:

WITH data AS(
  SELECT "2022-01-01" AS date, "A" AS visitor_id, 20 AS total_payment
  UNION ALL
  SELECT "2022-01-01" AS date, "B" AS visitor_id, 15 AS total_payment
  UNION ALL
  SELECT "2022-01-01" AS date, "C" AS visitor_id, 20 AS total_payment
  UNION ALL
  SELECT "2022-01-02" AS date, "A" AS visitor_id, 10 AS total_payment
  UNION ALL
  SELECT "2022-01-02" AS date, "D" AS visitor_id, 25 AS total_payment
)

SELECT
*,
COUNT(*) OVER(ORDER BY date)
FROM data
WHERE total_payment >= 20

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM