如何使mysql查询从MAX(值)中选择数据而不是值?
Posted
技术标签:
【中文标题】如何使mysql查询从MAX(值)中选择数据而不是值?【英文标题】:How to make mysql query select data from MAX(value) and not value? 【发布时间】:2021-07-16 18:08:18 【问题描述】:我正在尝试返回每个名称的最新日期的价格数据。
SELECT MAX(Date) AS max_date, Date, Price, Name
from STOCK_DATA_TRANSPOSED
group by Name
下面的输出是上面查询的输出。正如我们所见,价格数据是由 Date 而不是 max_date 返回的。
max_date Date Price Name
2021-04-21 00:00:00 2019-12-31 00:00:00 NULL 1COV.DE
2021-04-21 00:00:00 2019-12-31 00:00:00 73.41 AAPL
2021-04-21 00:00:00 2019-12-31 00:00:00 NULL ABB.ST
2021-04-21 00:00:00 2019-12-31 00:00:00 88.54 ABBV
2021-04-21 00:00:00 2019-12-31 00:00:00 86.86 ABT
2021-04-21 00:00:00 2019-12-31 00:00:00 NULL AC.PA
2021-04-21 00:00:00 2019-12-31 00:00:00 NULL ACA.PA
2021-04-21 00:00:00 2019-12-31 00:00:00 NULL ACCD
2021-04-21 00:00:00 2019-12-31 00:00:00 210.57 ACN
2021-04-21 00:00:00 2019-12-31 00:00:00 329.81 ADBE
2021-04-21 00:00:00 2019-12-31 00:00:00 NULL ADE.OL
2021-04-21 00:00:00 2019-12-31 00:00:00 NULL ADS.DE
2021-04-21 00:00:00 2019-12-31 00:00:00 7.64 AGLE
2021-04-21 00:00:00 2019-12-31 00:00:00 NULL AI.PA
2021-04-21 00:00:00 2019-12-31 00:00:00 51.33 AIG
2021-04-21 00:00:00 2019-12-31 00:00:00 NULL AIR.PA
2021-04-21 00:00:00 2019-12-31 00:00:00 NULL AKRBP.OL
2021-04-21 00:00:00 2019-12-31 00:00:00 1.75 AKTX
2021-04-21 00:00:00 2019-12-31 00:00:00 NULL ALFA.ST
2021-04-21 00:00:00 2019-12-31 00:00:00 NULL ALIV-SDB.ST
2021-04-21 00:00:00 2019-12-31 00:00:00 112.45 ALL
2021-04-21 00:00:00 2019-12-31 00:00:00 NULL ALV.DE
2021-04-21 00:00:00 2019-12-31 00:00:00 NULL AMBU-B.CO
2021-04-21 00:00:00 2019-12-31 00:00:00 241.07 AMGN
2021-04-21 00:00:00 2019-12-31 00:00:00 229.82 AMT
如何返回按名称分组的基于 max_date 的价格数据?
【问题讨论】:
Stack Overflow 上已经有很多此类问题的答案。参见例如***.com/questions/1313120/… 【参考方案1】:试试这个:
SELECT sdt1.Date, sdt1.Price, sdt1.Name
FROM STOCK_DATA_TRANSPOSED AS sdt1
WHERE (sdt1.Date, sdt1.Name) IN
(
SELECT MAX(sdt2.Date), sdt2.Name
FROM STOCK_DATA_TRANSPOSED AS sdt2
GROUP BY sdt2.Name
);
通过这种方式,您可以从STOCK_DATA_TRANSPOSED
获取信息,其中Date
是来自每个Name
的MAX(Date)
。
你可以在DBFiddle看到结果。
【讨论】:
我什至无法测试对我的数据的查询,它会超时 :D 无论如何我们可以优化它吗?以上是关于如何使mysql查询从MAX(值)中选择数据而不是值?的主要内容,如果未能解决你的问题,请参考以下文章