3

嗨,我有一个包含以下列的表格:

  • ID
  • 学生卡
  • 分数(整数)
  • 扫描日期
  • 关闭日期。

每周运行一个脚本。它每周为每个学生收集一个分数。每周分数保持不变。第一次运行脚本时,它会为每个学生输入 ID、Student_id、score、scanned_date 和 Null for Close_date。

对于每个额外的扫描,如果分数与上周的分数相同,则脚本不执行任何操作。但如果找到新分数,则在 close_date 字段中输入日期并输入包含 id、student_id、score、scanned_date 和 Null 的新行作为结束日期。

我正在尝试构建一个 sql 语句,它将帮助我构建一个时间线图。对于每个不同的扫描日期,它将返回每个学生所有分数的总和,以便我可以构建一个图表。

那有可能吗?

-玛丽亚

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 回答