データベースにテーブルがあり、1 つの列に日付が含まれ、もう 1 つの列にスコアが含まれています。基本的に、私がやりたいことは、特定の週に最高のスコアを獲得することです.
週は任意の日 (たとえば、金曜日から木曜日まで) から開始でき、それはユーザーによって定義されます。
これが私がこれまでに持っているものです:
SELECT MAX(Series), DATE(DATE(Date, 'weekday 0'), '-7 days') dateStartOfWeek FROM SeriesScores
WHERE Season = '2010-2011'
AND dateStartOfWeek = '2010-08-29'
GROUP BY DateStartOfWeek
はスコアSeries
を含む列でDate
あり、(悪い) 名前の付いた実際の日付です。
このクエリの問題は、週が始まるはずの日を除いて、毎日機能することです。
例: 2010-08-29 は日曜日です。この例では、特定の週の日曜日がどの日付であるかを調べようとしています。私の関数は、2010 年 8 月 29 日 (日曜日) を除くその週のすべての曜日で機能します。これは、日曜日である次の日 (この場合はそれ自体) を見つけようとするためです。これを補うために、正しい日曜日を取得するために 7 日間遡ります。これにより、すでに正しい日曜日に対してエラーが発生します。
この問題は Java を使用して簡単に解決できると考えましたが、代わりに SQL を使用してそれをどのように行うべきかを知りたいです。
私の解決策(それができるかどうかさえわかりません)は、日付とdateStartOfWeekが同じかどうかを確認することです。その場合、日付から 7 日を差し引かないでください。そうでない場合は、私の例で行ったようにしてください。ただし、このような条件を SQL で使用する方法がわかりません。ここで助けが必要です。
よろしくお願いします!