如何查询表以获取当前的总数,包括以前的日期?

Jay*_*ado 1 sql google-bigquery

我想从这些数据中获取 SQL 数据库中当天注册用户的当前总数:

| userID   | date_registered |
| -------- | --------------- |
| 10012    | 2021-03-01      |
| 10043    | 2021-03-01      |
| 10065    | 2021-03-04      |
| 10087    | 2021-03-05      |
| 10091    | 2021-03-05      |
| 10123    | 2021-03-05      |
| 10231    | 2021-03-06      |
| 10421    | 2021-03-09      |
Run Code Online (Sandbox Code Playgroud)

所以对于2021-03-01,目前有2个注册用户。

对于 2021-03-04,目前有 3 个注册用户(包括以前日期的注册用户)

对于 2021-03-05,目前有 6 个注册用户(包括以前日期的注册用户)

等等...

所以预期的结果应该是

| total_user | date            |
| ---------- | --------------- |
| 2          | 2021-03-01      |
| 3          | 2021-03-04      |
| 6          | 2021-03-05      |
| 7          | 2021-03-06      |
| 8          | 2021-03-09      |
Run Code Online (Sandbox Code Playgroud)

是否有 SQL 查询可以在 BigQuery 中完成此结果?

非常感谢您的帮助。

Tim*_*sen 6

在 BigQuery 或任何合理的数据库中,我们可以按日期聚合,然后SUM用作分析函数:

SELECT
    SUM(COUNT(*)) OVER (ORDER BY date_registered) AS total_user,
    date_registered AS date
FROM yourTable
GROUP BY
    date_registered
ORDER BY
    date_registered;
Run Code Online (Sandbox Code Playgroud)

请注意,如果在给定日期可能多次报告同一用户,则使用COUNT(DISTINCT userID)代替COUNT(*)