-2

我正在尝试检索每月第一个和最后一个日期的收盘价和开盘价。

出于某种原因,“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
4

1 回答 1

0

可能有一个更有效的解决方案,但这应该有效:

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;
于 2021-03-01T23:12:57.907 回答