【发布时间】:2018-06-22 13:46:13
【问题描述】:
假设我们有一个名为UserSessions 的表。每个用户可以在一天内或在不同的日子有多个会话。该表的列是
UserSessions table:
---------------------
SessionID (int) PK,
UserID (int),
datetime (datetime)
示例数据如下所示:
1, 1001, 2017-01-01
2, 1001, 2017-01-01
3, 1002, 2017-01-01
4, 1002, 2017-01-02
...
现在,我们要编写一个查询,显示过去 30 天内每天的不同用户数。最好的方法是什么?
一个明显的解决方案是使用自联接,但我们希望我们可以避免这种情况。
它与窗口功能有关吗?我想知道是否有一个功能,对于每一行,我们可以在 x 行前面和 y 行之后聚合。
例如,类似的问题,例如“到目前为止记录的每一天前 30 天的窗口中橙色的平均价格是多少”等。更具体地说,这就像询问 x-30 期间的聚合第 x 天到 x-1 天。
【问题讨论】:
-
'我想避免这种情况'
标签: mysql sql aggregation window-functions analytic-functions