对于像这样名为 Activity 的表:
player_id | 设备ID | 活动日期 | 玩过的游戏 |
---|---|---|---|
1 | 2 | 2016-03-01 | 5 |
1 | 2 | 2016-03-02 | 6 |
2 | 3 | 2017-06-25 | 1 |
3 | 1 | 2016-02-02 | 0 |
3 | 4 | 2018-07-03 | 5 |
我想知道为什么以下查询只返回第一行的结果:
select player_id, datediff(event_date, min(event_date)) as date_diff
from Activity
退货:
player_id | 日期_差异 |
---|---|
1 | 28 |
我期待第四行会被返回,因为它具有最小的 event_date,诸如此类
player_id | 日期_差异 |
---|---|
2 | 0 |
我认为您应该有一个单独的
select
查询来查找最短事件日期,然后可以使用它从主查询中的事件日期中减去
select player_id, event_date - (select min(event_date) from Activity) as date_diff
from Activity;
从您的示例数据中,运行查询将得到:
player_id date_diff
1 99
1 100
2 10423
3 0
3 20501