0

给定一张关于人们何时开始和完成任务的大数据表,例如:

人 | 任务 | 开始日期 | 结束日期
---------------------------------------------
A 清洁 20-FEB-2012 22-FEB-2012
N 菜肴 2012 年 2 月 20 日 2012 年 2 月 24 日
Z 清洁 21-FEB-2012 23-FEB-2012

和一个分数表,根据完成任务所需的时间为每项任务分配 2、3、4 分,例如:

| 任务 | 天数 | 分数
--------------------------
清洁 2 2
清洁 1.5 3
清洁 1 4
菜肴 3 2
菜肴 2.5 3
菜肴 2 4

我如何生成一个查询,该查询给出每个人对每项任务的总体得分,例如:

人 | 任务 | 总体得分
---------------------------------------------
A清洁3.1
一道菜2.7
N 清洁 3.4

解决方案一直在巧妙地躲避我,将不胜感激!我目前正在使用 SQLite。

4

1 回答 1

0

你的定义有点模糊。但是,以下内容应该对您有所帮助:

select t.person, t.task, sum(s.score)
from tasks t left outer join
     score s
     on t.task = s.task and
        s.daysTaken = t.julianday(dateended) - t.julianday(datestarted)
group by t.person, t.task

处理范围有点困难。您需要获取区间的两端,然后进行连接:

select t.person, t.task, sum(s.score)
from tasks t left outer join
     (select s.*,
             (select min(days_taken) from score s2 where s2.person = s.person and s2.task = s.task and s2.days_taken > s.days_taken
             ) as nextDays_Taken
      from score s
     ) s
     on t.task = s.task and
        t.julianday(dateended) - t.julianday(datestarted) >= s.days_taken and
        t.julianday(dateended) - t.julianday(datestarted) < nextDays_Taken
group by t.person, t.task
于 2013-02-12T03:28:39.347 回答