2012-08-13 50 views
3

您好我有下列的表:SQL語句 - 如何建立一個時間表圖

  • ID
  • student_id數據
  • 分數(INT)
  • scanned_date
  • close_date。

腳本每週運行一次。它每週爲每個學生收集一個分數。每週的分數保持不變。當腳本第一次運行時,它會爲每個學生輸入ID,Student_id,score,scanned_date和Null以獲取Close_date。

對於每增加一次掃描,如果分數與上週的分數相同,那麼腳本不做任何事情。 但是,如果找到了新分數,那麼它會在close_date字段中輸入日期,並輸入一個新行,其中包含id,student_id,score,scanned_date和Null以顯示關閉日期。

我想建立一個sql語句,這將幫助我建立一個時間軸圖。對於每個不同的scanned_date,它將返回每個學生的所有分數的總和,以便我可以建立一個圖表。

是可以做到的嗎?

-Maria

回答

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