3

こんにちは、次の列を持つテーブルがあります。

  • ID
  • 学生証
  • スコア (整数)
  • スキャンした日付
  • close_date。

スクリプトは毎週実行されます。毎週各生徒のスコアを収集します。毎週、スコアは同じままです。スクリプトが初めて実行されると、各学生の ID、Student_id、スコア、scanned_date、および Close_date の Null が入力されます。

追加のスキャンごとに、スコアが先週のスコアと同じである場合、スクリプトは何もしません。ただし、新しいスコアが見つかった場合は、close_date フィールドに日付を入力し、id、student_id、score、scanned_date、および終了日の Null を含む新しい行を入力します。

タイムライン グラフの作成に役立つ SQL ステートメントを作成しようとしています。個別のscanned_dateごとに、グラフを作成できるように、各学生のすべてのスコアの合計が返されます。

それは可能ですか?

-マリア

4

1 に答える 1

3

次のクエリは、スキャンされた個別の日付をすべて抽出し、それらをテーブルに結合して、各日付でアクティブなレコードを見つけます。次に、結果を日付別に集計します。

select dates.scanned_date,
       count(t.id) as numids,
       sum(score) as sumscore
from (select distinct scanned_date from t) as dates left outer join
     t
     on dates.scanned_date >= t.scanned_date and
        dates.scanned_date < t.close_date
group by dates.scanned_date
order by 1
于 2012-08-13T20:15:56.190 に答える