-1

日付と価格を含むテーブルがあり、2 つの日付の間の範囲を選択しようとしていますが、終了日の後に n 行を追加したいと考えています。

これはデータのサンプルです:

2013 年 1 月 9 日 29.67、
2013 年 1 月 8 日 29.51、
2013-01-07 28.69、
2013 年 1 月 4 日 28.01、
2013 年 1 月 3 日 27.88、
2013 年 1 月 2 日 27.44、
2012 年 12 月 31 日 26.20、

たとえば、私はやっています:

SELECT * 
FROM $table_name 
WHERE date between '2013-01-09' AND '2013-01-04' 
ORDER BY date DESC

私がやろうとしているのは、2013-01-04 に 3 行を加えて 2012-12-31 になるように、3 行余分に追加することです (ご覧のとおり、連続していないため、日数ではありません)。

問題を説明するだけでも難しいので、オンラインで解決策を見つけようとすることを想像してみてください。


要求に応じて更新します。

そこで、私が抱えている問題を言い換えて単純化しようとします。これまで書いてきたことはすべて忘れて、新しい視点から始めましょう。私が抱えている問題を2つのステップに分けます。また、例として簡単な数字を使用します。新しいデータ テーブル:

2013-01-09 7
2013-01-08 1
2013-01-07 9
2013-01-04 1
2013-01-03 8
2013-01-02 5
2012-31-12 6

特定の日付範囲について、これらの値の平均を計算したいと考えています。したがって、データ範囲が 2013 年 1 月 9 日から 2013 年 1 月 3 日で、期間 2 の平均である場合、表は次のようになります。

2013-01-09 7 4
2013-01-08 1 5
2013-01-07 9 5
2013-01-04 1 4.5
2013 年 1 月 3 日 8 6.5
2013 年 1 月 2 日 5 該当なし

これを行うには、問題はありません。ここで問題が発生します。範囲の最初の日付については、期間 2 の前にデータを選択していないため、期間 2 の平均を計算できないことに注意してください。問題は、2013 年 1 月 2 日の平均も計算できるように、日付範囲 (特に 2012 年 31 月 12 日からのデータ) の後に 1 つの余分なポイントを選択するにはどうすればよいかということです。

時間をありがとう。

4

2 に答える 2

1

データベース側でこれを行っている場合は、日付テーブルを作成できます。次に、希望する範囲を取得し、その日付の価格に参加します。

于 2013-01-11T18:25:08.417 に答える
0

コメントから、私は本当にまったくはっきりしていなかったようですので、質問を更新してください。

これはhtmlでも奇妙なことでもありません。価格の列で数学的な計算を行うphpスクリプトを書いています。

この計算では、n日を取得し、日付範囲に基づいて平均をとる必要があります。

ただし、問題は、日付範囲を超えて数日余分に選択する必要があることです。たとえば、範囲が2013-01-04から2013-01-09の場合、3つのデータポイントを追加する必要があります。この場合、2013-12-31になります。

問題は、MySqlで、日付の範囲とその範囲を超えるn行の数をどのように選択するかです。残念ながら、ID列がありません。これがより明確であったことを願っています。

于 2013-01-14T10:53:13.480 に答える