簡體   English   中英

如何查詢表以獲取當前總計數,包括以前的日期?

[英]How to query table to get current total count including previous dates?

我想從此數據中獲取 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      |

所以對於 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      |

是否有可能在 BigQuery 中完成此結果的 SQL 查詢?

非常感謝您的幫助。

在 BigQuery 或任何合理的數據庫中,我們可以按日期聚合,然后使用SUM作為分析 function:

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;

請注意,如果在給定日期可能多次報告同一用戶,則使用COUNT(DISTINCT userID)而不是COUNT(*)

這個可以用,不過mysql 8+還有更實用的方法

SELECT e1.date_registered, (SELECT COUNT(e2.userID) FROM example e2 
WHERE e2.date_registered <= e1.date_registered) AS count_ FROM example e1
GROUP BY date_registered

SqlFiddle

暫無
暫無

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

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