MYSQL子查询的总和

时间:2013-04-27 09:16:09

标签: mysql

我真的很困惑这个mysql查询。 我正在帮助一位朋友创建一个人员/事件数据表。 我已经成功创建了一个虚拟表,查看每个事件的每个工作人员的成本。 在下面的查询中,我选择了事件

SELECT event.eventid, costs.staffnumber, cost _hour *( SUM( TIME_TO_SEC( TIMEDIFF( hours, pause ) ) ) ) /3600 AS costs_event
FROM costs, event
WHERE costs.staffnumber = event.staffnumber
GROUP BY event.eventid, event.staffnumber

如果我带走了group by event.staffnumber,它会给我一个错误的价值。 因为不同的行具有不同的值,但它只是假设每个员工都具有相同的cost_hour

示例:

1001 (Eventid)
42 (staffnumber)
112,50 (Costs Sum from 15 EUR * 7,5 hours)

第二行

1001
41 (staffnumber)
78 (Costs Sum from 12 * 6,5 hours)

所以我想获得190,50

当我带走group by event.staffnumber时,我得到210欧元(14小时* 15欧元)。

那么我现在如何总结costs_event列并按event.eventid对它们进行分组。

将不胜感激任何帮助。

干杯

1 个答案:

答案 0 :(得分:0)

包括cost_hour 总和:

SELECT event.eventid, 
       costs.staffnumber, 
       SUM( cost _hour*TIME_TO_SEC(TIMEDIFF(hours, pause)) ) /3600 AS costs_event
FROM costs
JOIN event
  ON costs.staffnumber = event.staffnumber
GROUP BY event.eventid