您好,我有一个包含以下列的表格:
- 身份证
- 学号
- 分数(整数)
- 扫描日期
- 关闭日期。
每周运行一个脚本。它每周为每个学生收集一个分数。每周分数保持不变。当脚本第一次运行时,它会为每个学生输入 ID、Student_id、分数、scanned_date 和 Null for Close_date。
对于每次额外的扫描,如果分数与上周的分数相同,则脚本不执行任何操作。 但如果找到新分数,则会在 close_date 字段中输入日期,并输入包含 id、student_id、score、scanned_date 和 Null 的新行作为结束日期。
我正在尝试构建一个 sql 语句,这将帮助我构建一个时间线图。对于每个不同的 scanned_date,它将返回每个学生所有分数的总和,以便我可以构建一个图表。
可以吗?
-玛丽亚
最佳答案
以下查询提取所有不同的扫描日期,并将它们连接回表中以查找每个日期的事件记录。然后按日期汇总结果:
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
关于SQL语句——如何构建时间线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11941545/