为表中的每个记录检索外部表中记录随时间的运行总数



我有一个表group和一个表members。一个group有许多members。单个member记录可以属于单个groupmembers表具有外键/列group_id

groups
+---------+---------+
|  id     |  name   |
+---------+---------+
| 1       | group01 |
+---------+---------+
members
+----+---------+------------+
| id | groupid | created_at |
+----+---------+------------+
|  9 |       1 | 2020-03-05 |
+----+---------+------------+

对于groups表中的每条记录,我需要检索其成员计数随时间的运行总数。

下面是一个最终数据需要看起来像什么的例子,以使其更加清晰。

[
{ group: 'group01', count: 3, date: '2020-01-05' },
{ group: 'group01', count: 10, date: '2020-01-12' },
{ group: 'group01', count: 14, date: '2020-02-02' },
{ group: 'group02', count: 5, date: '2020-01-02' },
{ group: 'group02', count: 13, date: '2020-01-23' },
{ group: 'group02', count: 23, date: '2020-01-28' },
...
]

有人知道怎么做吗?

在MySQL 8.0中,您只需使用窗口函数即可。您甚至可以在不查看groups表的情况下获得信息:

select
m.group_id,
count(*) over(partition by g.group_id order by date) cnt,
m.date
from members m

或者,如果您想要一些在groups中可用但在members中没有的数据(例如,组的名称(:

select
g.group_name,
count(*) over(partition by g.group_id order by date) cnt,
m.date
from members m
inner join groups g on g.group_id = m.group_id

相关内容

  • 没有找到相关文章

最新更新