You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery标准SQL:如何筛选过去3个月游玩满10天的游戏高收入用户

BigQuery SQL 解决方案

首先明确前提:假设你已有存储用户游玩行为的表my-database.Gameplay_events,核心字段包含user_id(对应用户ID)、play_time(游玩行为的时间戳/日期字段)。

原有代码问题修正

你原有代码存在两处不符合需求的问题:

  • ORDER BY total_rev ASC 会返回收入最低的10位用户,需改为DESC取收入最高的用户
  • 未限定IAP收入的统计范围为过去3个月,需补充时间过滤条件

完整实现代码

SELECT
  users.user_id,
  SUM(pay.amount) AS total_rev
FROM
  `my-database.User` AS users
INNER JOIN
  `my-database.IAP_events` AS pay
ON
  users.user_id = pay.user_id
INNER JOIN
  `my-database.Games` AS games
ON
  users.game_id = games.game_id
-- 关联筛选符合游玩天数要求的用户
INNER JOIN (
  SELECT
    user_id
  FROM
    `my-database.Gameplay_events`
  WHERE
    -- 限定统计过去3个月的游玩记录
    DATE(play_time) >= DATE_SUB(CURRENT_DATE(), INTERVAL 3 MONTH)
  GROUP BY
    user_id
  -- 筛选不同游玩日期≥10天的用户
  HAVING COUNT(DISTINCT DATE(play_time)) >= 10
) AS valid_users
ON
  users.user_id = valid_users.user_id
WHERE
  games.game_name = "Love"
  -- 限定IAP收入统计范围为过去3个月
  AND DATE(pay.pay_time) >= DATE_SUB(CURRENT_DATE(), INTERVAL 3 MONTH)
GROUP BY
  users.user_id
ORDER BY
  total_rev DESC
LIMIT
  10

逻辑说明

  • 子查询valid_users先完成游玩天数统计:筛选过去3个月的游玩记录,按用户ID分组后,统计去重的游玩日期数量,仅保留≥10天的用户ID
  • 主查询通过内连接关联valid_users,自动过滤掉不符合游玩天数要求的用户
  • 补充了IAP收入的时间过滤,确保统计的是过去3个月的收入数据
  • 如果你的时间字段本身就是DATE类型,可去掉DATE()转换函数直接比对

备注:如果游玩记录表同时包含多游戏数据,可在子查询valid_users中额外关联Games表筛选game_name = "Love",或直接增加game_id过滤条件,确保统计的是《Love》游戏内的游玩天数。

内容的提问来源于stack exchange,提问作者MatmataHi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:09:00