mysql - 如何计算每个日期的行数?
问题描述
我有一张桌子:
id | reg_date
1 | 01-02-2019
2 | 01-02-2019
3 | 01-02-2019
4 | 02-02-2019
5 | 02-02-2019
6 | 03-02-2019
我需要计算每个日期的行数(在我的例子中是新用户):
count | reg_date
3 | 01-02-2019
5 | 02-02-2019
6 | 03-02-2019
我的查询是:
SELECT @cnt:=@cnt+count AS count, reg_date
FROM (
SELECT COUNT(*) AS count, reg_date
FROM users, (select @cnt:=0) x
group by reg_date
) x
order by reg_date
但是如何计算某个日期的行数?例如,最后一天\一周。
count | reg_date
6 | 03-02-2019
谢谢!:)
解决方案
如果您使用的是 MySQL 8,则可以使用row_number()
窗口函数来计算计数:
SELECT max(rn) AS count, reg_date
FROM (SELECT row_number() OVER (ORDER BY reg_date) AS rn
, reg_date
FROM users) AS x
GROUP BY reg_date
ORDER BY reg_date;
count reg_date
---------- ----------
3 2019-01-02
5 2019-02-02
6 2019-03-02
推荐阅读
- python - ImportError:无法从部分初始化的模块“tkinter”导入名称“Frame”
- javascript - 试图让我的时钟在 bootstrapvue 中工作 - 我做错了什么?
- r - 矩阵变化的匈牙利算法
- css - CSS 样式不反映 Popover 中的 HTML 内容
- java - java - 如何在java spark中将字符串值写入MongoDB ObjectId?
- python - 为什么当我运行这段代码时什么都没有发生?
- r - 手动绘制 CI
- swiftui - 如何让 SwiftUI 列表删除按钮工作?(或消失)
- flutter - 文本小部件 FontWeight 粗体属性使小部件变得更宽
- git - 如何将工件从 git repo 迁移到多个工件文件夹?