下面是我的表格让我们调用帐户
**ID accountID score tracking_date
1 1 3 2014-09-25 00:01:05
2 2 4 2014-09-26 01:05:18
3 1 6 2014-09-27 09:23:05
4 2 9 2014-09-28 20:01:05
5 1 1 2014-09-28 23:21:34
6 3 7 2014-09-21 00:01:00
7 2 1 2014-09-22 01:45:24
8 2 9 2014-09-27 14:01:43
9 3 1 2014-09-24 22:01:27
我想选择具有最大日期的记录,以及与该 accountId 具有最小 tracking_date 的记录的得分差异。所以我想要如下输出
ID accountID score_with_maxdate diff_score_with_mindate max_tracking_date
1 1 1 -2 2014-09-28 23:21:34
2 2 9 8 2014-09-28 20:01:05
3 3 1 -6 2014-09-24 22:01:27
有什么帮助吗?
最佳答案
这是一个选项。我们可以自加入一个子查询,该查询为每个帐户找到最小和最大跟踪日期两次到您的原始表。这将引入那些最大跟踪日期记录的所有元数据,包括分数。
SELECT
t1.accountID,
t2.score AS score_with_maxdate,
t2.score - t3.score AS diff_score_with_mindate,
t1.max_tracking_date
FROM
(
SELECT
accountID,
MAX(tracking_date) AS max_tracking_date,
MIN(tracking_date) AS min_tracking_date
FROM yourTable
GROUP BY accountID
) t1
INNER JOIN yourTable t2
ON t1.accountId = t2.accountID AND t2.tracking_date = t1.max_tracking_date
INNER JOIN yourTable t3
ON t1.accountId = t3.accountID AND t3.tracking_date = t1.min_tracking_date
ORDER BY
t1.accountID;
Demo
关于mysql - 根据 MySql 中具有最小和最大日期的记录选择差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50926717/