SQL语句——如何构建时间线图

标签 sql

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

  • 身份证
  • 学号
  • 分数(整数)
  • 扫描日期
  • 关闭日期。

每周运行一个脚本。它每周为每个学生收集一个分数。每周分数保持不变。当脚本第一次运行时,它会为每个学生输入 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/

相关文章:

php - key '0' 的重复条目 'PRIMARY' key 设置为 AI 并且在查询中未提及

sql - 索引空值以在 DB2 上快速搜索

php - 有没有办法在 SQL 查询中执行条件逻辑?

MySQL:创建具有计算约束的表

sql - 根据先前查询的结果更新表

mysql - 在 mySQL 中寻找此 IF 语句的解决方案

SQL Server 根据另一个表替换字符串

sql - PostgreSQL 中 Informix GLOBAL 修饰符的等价物

SQL:从两个历史表构建时间线的最佳方式

sql - Oracle - 忽略约束失败