【问题标题】:Latest date with SQL QuerySQL 查询的最新日期
【发布时间】:2014-05-23 14:30:31
【问题描述】:

提前感谢您对我的帮助。我有下表:

 Name | LastUpdate  |   Amount  |
 ABC  |  2014-4-9   |    100    |
 ABC  |  2014-4-9   |  **101**  |
 ABC  |  2014-4-8   |     99    |
 DEF  |  2014-4-9   |  **200**  |
 DEF  |  2014-4-8   |    160    |
 GHI  |  2014-4-9   |   **50**  |
 GHI  |  2014-4-8   |     80    |

我的查询似乎无法获得以下结果:最新日期的金额和所有名称的最高金额的总和。

上面的示例答案是 351 (101+200+50)。

【问题讨论】:

  • 但我从上面的例子中看到结果应该是 100+101+200+50=451
  • SQL 中的 LastUpdate-Column 是什么数据类型??
  • 您必须使用子查询,但首先您必须检查您的表数据类型。
  • 你使用什么类型的数据库(RDBMS)?
  • @user3470953 他只想要每个名字一个数量,所以不是 100

标签: mysql sql


【解决方案1】:

我的这个解决方案基于对

的答案

find maximum of set of columns for multiple rows in mysql query

SELECT SUM(Amount) AS Total
FROM table1 AS t
WHERE LastUpdate = (SELECT MAX(LastUpdate) 
                    FROM table1 
                    WHERE NAme = t.Name)
AND Amount = (SELECT MAX(Amount) 
              FROM table1
              WHERE Name = t.Name
              AND LastUpdate = t.LastUpdate)

DEMO

【讨论】:

  • 好的,当所有名称的最新日期相同 (2014-4-9) 时,它可以工作。但是,如果 GHI 的最大日期不同,则以下不起作用创建表 table1(名称 varchar(50),LastUpdate 日期,Amount int);插入table1值('ABC','2014-4-9',100);插入 table1 值('ABC','2014-4-9',101);插入 table1 值('ABC','2014-4-8',99);插入 table1 值('DEF','2014-4-9',200);插入 table1 值('DEF','2014-4-8',160);插入table1值('GHI','2014-4-6',50);插入 table1 值('GHI','2014-4-5',80);
  • 您的问题并不清楚您是否想要每个名称的最大日期,您的示例使用了每个人的最大日期。我已经发布了一个新的查询,应该可以帮助您澄清。
  • Bravo Barmar 这就是现场!
猜你喜欢
  • 2020-07-04
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多