gpt4 book ai didi

MySql - 选择第一行和最后一行(不是最小值/最大值)

转载 作者:可可西里 更新时间:2023-11-01 08:52:22 26 4
gpt4 key购买 nike

我有一个 MySql 表,其中包含按以下顺序排列的每日股市数据:

_date, _opening_price, _high_price, _low_price, _close_price

我正在尝试使用以下方法将此数据转换为每周数据:

SELECT
MAX(_date) AS _date,
WEEK(_date) AS weeknum,
_opening_price,
MAX(_high_price) AS _high_price,
MIN(_low_price) AS _low_price,
_closing_price
FROM myTable
GROUP BY weeknum ORDER BY _date;

如何选择 _opening_price 使其成为该周每日数据中的第一个 _opening_price?同样,如何选择 _closing_price 使其成为一周每日数据中的最后一个 _closing_price?

这是一个例子:

Google Stock Market Data - MSFT

对于 2007-01-05 结束的一周,开盘价应取自 2007-01-03(红色),收盘价应取自 2007-01-05(绿色)。同样,对于结束于 2007-01-12 的一周,开盘价应为 2007-01-08,收盘价应为 2007-01-12。

最佳答案

试试这个解决方案:

SELECT 
MAX(a._date) weekending,
MAX(CASE WHEN a._date = b.mindate THEN a._opening_price END) openingprice,
MAX(CASE WHEN a._date = b.maxdate THEN a._closing_price END) closingprice
FROM myTable a
INNER JOIN
(
SELECT
CONCAT(YEAR(_date), '-', WEEK(_date)) weeknum,
MIN(_date) mindate,
MAX(_date) maxdate
FROM myTable
GROUP BY weeknum
) b ON a._date IN (b.mindate, b.maxdate)
GROUP BY b.weeknum

关于MySql - 选择第一行和最后一行(不是最小值/最大值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11461666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com