sql查询计算不正确,可能缺少组?

sql查询计算不正确,可能缺少组?,sql,sqlite,Sql,Sqlite,我正在使用sqlite,我有一个几乎可以正常工作的查询。不过,每周工作时数的计算结果并不正确。我试图计算我的员工在给定日期范围内为特定客户花费了多少小时。时间存储在时间表行文件中的单独字段(周一、周二、周三、周四、周五、周六、周日)中的1条记录中。当然,可能有多条记录与该customerID关联,因此我使用Sum来计算总数。如果我不使用每周小时数的总和,并且在时间表行文件中只有一条记录,则计算将返回正确的值。人工费率的计算也出现了错误。这是一个奇怪的例子,因为我需要计算每周花费的时间,然后乘以为

我正在使用sqlite,我有一个几乎可以正常工作的查询。不过,每周工作时数的计算结果并不正确。我试图计算我的员工在给定日期范围内为特定客户花费了多少小时。时间存储在时间表行文件中的单独字段(周一、周二、周三、周四、周五、周六、周日)中的1条记录中。当然,可能有多条记录与该customerID关联,因此我使用Sum来计算总数。如果我不使用每周小时数的总和,并且在时间表行文件中只有一条记录,则计算将返回正确的值。人工费率的计算也出现了错误。这是一个奇怪的例子,因为我需要计算每周花费的时间,然后乘以为客户工作的员工的成本率。每个员工可能有不同的成本率

SELECT c.customerID, c.customer, sum(il.line_price) AS net, sum (tl.mon + tl.tues + tl.wed + tl.thurs + tl.fri + tl.sat + tl.sun) AS weekly_hours, 
sum( (tl.mon + tl.tues + tl.wed + tl.thurs + tl.fri + tl.sat + tl.sun) * s.cost_rate ) AS labour_rate
FROM customer AS c
  LEFT JOIN invoice AS i
  ON c.customerID = i.customerID
  LEFT JOIN invoice_line AS il
  ON i.invoiceID = il.invoiceID
  LEFT JOIN timesheet_line AS tl
  ON c.customerID = tl.customerID
  LEFT JOIN timesheet AS t
  ON tl.timesheetID = t.timesheetID
  LEFT JOIN staff AS s
  ON t.staffID = s.staffID
  LEFT JOIN project AS p
  ON tl.projectID = p.projectID
  WHERE (i.date BETWEEN '2015-03-01' AND '2015-12-01') OR
  (tl.customerID = c.customerID AND t.date BETWEEN '2015-03-01' AND '2015-12-01')
  GROUP BY c.customerID
  ORDER BY c.customer ASC

如果任何工作日列包含
NULL
值,则总和将不正确。啊,好的,不是所有的字段day字段都有值。我想我必须在where子句中为每一天设置一个NOTNULL条件?类似的。我把它放在Select语句中,但我猜这不是你的意思,因为它会产生旧的结果和(ifnull(tl.mon,0)+ifnull(tl.tues,0)+ifnull(tl.wed,0)+ifnull(tl.thurs,0)+ifnull(tl.fri,0)+ifnull(tl.sat,0)+ifnull(tl.sun,0))每周一小时