问题描述
我正在尝试检索每月第一个和最后一个日期的收盘和开盘股票价格。
出于某种原因,'end_date_closed_stock_price' 的输出为 NULL。
你知道它为什么会给出这个结果吗?
另外,您能告诉我检索该月最后一天的适当查询吗?
提前致谢!
SELECT YEAR(date) AS years,MONTH(date) AS months,CASE WHEN date = MAX(date) THEN close END end_date_closed_stock_price,CASE WHEN date = MIN(date) THEN open END first_date_opened_stock_price
FROM nasdaq_feb_25_1971_feb_25_2021
GROUP
BY 1,2
ORDER
BY 1 DESC;
---OUTPUT---
2020 5 NULL 9382.349609
2019 1 NULL 6947.459961
2019 2 NULL 7266.279785
2019 3 NULL 7582.290039
解决方法
可能有更有效的解决方案,但这应该有效:
WITH dates as
(SELECT YEAR(date) as years,MONTH(date) AS months,MAX(date) as end_date,MIN(date) as first_date
FROM nasdaq_feb_25_1971_feb_25_2021
GROUP BY 1,2)
SELECT dates.years,dates.months,price1.close as end_date_closed_stock_price,price2.open as first_date_opened_stock_price
FROM dates
JOIN nasdaq_feb_25_1971_feb_25_2021 price1
ON price1.date = dates.end_date
JOIN nasdaq_feb_25_1971_feb_25_2021 price2
ON price2.date = dates.first_date
ORDER
BY 1 DESC,2 DESC;