![](/img/trans.png)
[英]How to fix mySQL query to find all dates of month mapped with total Count for each date including zeros?
[英]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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.