私は毎日持っているMySQLテーブルから株の値を毎週(Mon-Sunのようにmode = 1パラメータでYEARWEEKに指定されています)値を取得しようとしています低い値、高い値、開いた値および近い値。MySQLのGROUP BY YEARWEEKが最初に動作しません
例えば、次のクエリは正しく私の月の第1回2012年3月1日2012年の間に数週間のための高値と安値を与える:
SELECT date, MIN(low), MAX(high)
FROM daily_stock_values WHERE stock_id = SOMESTOCK
AND date BETWEEN '2012-01-01' AND '2012-03-01' GROUP BY YEARWEEK(date, 1)
この正しくは、出力:
+------------+-----------+-----------+
| date | max(high) | min(low) |
+-----------+-----------+-----------+
| 2012-01-01 | ......... | ......... |
| 2012-01-02 | ......... | ......... |
| 2012-01-09 | ......... | ......... |
| 2012-01-16 | ......... | ......... |
| 2012-01-23 | ......... | ......... |
| 2012-01-30 | ......... | ......... |
| 2012-02-06 | ......... | ......... |
| 2012-02-13 | ......... | ......... |
| 2012-02-20 | ......... | ......... |
| 2012-02-27 | ......... | ......... |
+------------+-----------+-----------+
することができますようにすべての日付が正確に(結果の下位範囲である最初のものに加えて)月曜日に指定されています。これは月曜日の週の最初の日です。しかし
、私が最初に導入し(hereが説明するように)だけでなく続くようにしてみてください。
SELECT date, MIN(low), MAX(high),
SUBSTRING_INDEX(GROUP_CONCAT(CAST(open AS CHAR) ORDER BY date), ',', 1) AS open,
SUBSTRING_INDEX(GROUP_CONCAT(CAST(close AS CHAR) ORDER BY date DESC), ',', 1) AS close
FROM daily_stock_values WHERE stock_id = SOMESTOCK
AND date BETWEEN '2012-01-01' AND '2012-03-01' GROUP BY YEARWEEK(date, 1)
これは、残念ながら私のGROUP BYを台無しにし、日付はもう月曜日に整列されないように発生します
+------------+-----------+-----------+-----------+-----------+
| date | max(high) | min(low) | open | close |
+------------+-----------+-----------+-----------+-----------+
| 2012-01-01 | ......... | ......... | ......... | ......... |
| 2012-01-08 | ......... | ......... | ......... | ......... |
| 2012-01-15 | ......... | ......... | ......... | ......... |
| 2012-01-22 | ......... | ......... | ......... | ......... |
| 2012-01-29 | ......... | ......... | ......... | ......... |
| 2012-02-05 | ......... | ......... | ......... | ......... |
| 2012-02-12 | ......... | ......... | ......... | ......... |
| 2012-02-19 | ......... | ......... | ......... | ......... |
| 2012-02-26 | ......... | ......... | ......... | ......... |
| 2012-02-27 | ......... | ......... | ......... | ......... |
+------------+-----------+-----------+-----------+-----------+
ここでは何が起こっていますか?ありがとう!
返信いただきありがとうございます!私が選択する必要があるのは、観測期間中の最初の日付で、月曜日、または与えられた最初の日が月曜日でない場合(その日(2番目の結果とは違って最初の結果と同様))です。この場合、日付に関する限り、正確に何を選択すべきですか? – user1094786