我有一个MariaDB数据库与用户和他们相应的注册日期,像:
+----+----------+----------------------+
| ID | Username | RegistrationDatetime |
+----+----------+----------------------+
| 1 | A | 2022-01-03 12:00:00 |
| 2 | B | 2022-01-03 14:00:00 |
| 3 | C | 2022-01-04 23:00:00 |
| 4 | D | 2022-01-04 14:00:00 |
| 5 | E | 2022-01-05 14:00:00 |
+----+----------+----------------------+
我想知道在每个日期结束时系统中的用户总数,只需要一个查询-这可能吗?
所以结果应该是这样的:
+------------+-------+
| Date | Count |
+------------+-------+
| 2022-01-03 | 2 |
| 2022-01-04 | 4 |
| 2022-01-05 | 5 |
+------------+-------+
是的,使用PHP进行单个查询和循环日期是很容易的,但是如何只使用一个查询呢?
EDIT感谢您的回复,是的,用户可能会被取消/删除,即在特定时间段内不可能按最大值(ID)进行操作。ID
列中可能存在空白
4条答案
按热度按时间v8wbuo2f1#
使用
COUNT()
窗口函数:请参见demo。
p4rjhz4m2#
输出:
| 日期(注册日期时间)|sum(count(*))超过(按日期排序(RegistrationDatetime))|
| - ------| - ------|
| 2022年1月3日|第二章|
| 2022年1月4日|四个|
| 2022年1月5日|五个|
参见:DBFIDDLE
mlnl4t2r3#
wgxvkvu94#
如果没有已取消的用户,您可以执行以下操作:
检查here演示。
否则,您可能需要使用ROW_NUMBER来生成该排名:
查看here演示。