mysql - 根据 MySql 中具有最小和最大日期的记录选择差异

标签 mysql sql join

下面是我的表格让我们调用帐户

**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;

enter image description here

Demo

关于mysql - 根据 MySql 中具有最小和最大日期的记录选择差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50926717/

相关文章:

php - 如何选择并显示与一个ID相关的多个数据

mysql - MySQL 中的 log-queries-not-using-indexes 和 LIKE

php - Laravel - 查询最后两个等于的位置

php - Mysql count 和 count distinct 在同一个查询中

基于值的 SQL JOIN 表

mysql - 将列作为行返回

mysql - 优化了 3 个表的连接查询

python - 如何合并两个列表?为集合操作保留相同的列表元素

arrays - 不太清楚 join 操作在 ruby​​ 数组中是如何工作的

PHP- fatal error : Call to a member function dbRows() on a non-object