2016-08-04 30 views
0

我今天遇到了一个SQL问题,我似乎无法解决。任何帮助或指针,将不胜感激。首先做一个总和然后乘以值

我有以下2个表 enter image description here

现在我想要得到的是(labourentries.minutes_worked * price_per_hour/60)AS价格,然后以这组由每labourtype,做一个SUM(价格),所以我会得到每个实验类型的所有条目总数。

我使用的是MySQL她这里是一些样本数据 enter image description here

我得到了一些SQL这么远,但不能完全解决我的问题。

SELECT SUM(labourentries.minutes_worked) AS minutes_worked, 
     AVG(labourentries.price_per_hour) AS average_price, 
     count(labourtypes.id) AS amount, 
     labourtypes.labourtype 
FROM labourtypes 
INNER JOIN labourentries ON labourtypes.id = labourentries.labourtype_id 
GROUP BY labourtypes.id 

在这里,我试图做price_per_hour的平均值,然后组,但差别太大是可靠的。

无论如何感谢提前的帮助。 干杯!

+1

需要说明... 请写2或3行labourtypes表 请写出2排或3排表格 ---然后 请写出2或3行您最终希望看到的结果 –

+0

也标记使用的dbms产品。 – jarlh

+1

您是否需要通过'labourtypes.id'的'labourentries' _and_ totals中的'price''或仅仅总计?如果后者是这种情况(并且你的代码建议如此),那么你可以简单地使用'sum(minutes_worked * price_per_hour/60)作为Price'。看到简化的演示:http://sqlfiddle.com/#!9/ce93a/2 –

回答

0

试试这个:

SELECT SUM(PRICE) AS PRICE_PER_LABOURTYPE, A.LABOUR_TYPE FROM 
(SELECT (B.MINUTES_WORKED * B.PRICE_PER_HOUR/60) AS PRICE, A.LABOUR_TYPE FROM LABOURTYPES A 
INNER JOIN LABORENTERIES B ON A.ID = B.LABOURTYPE_ID) 
GROUP BY A.ID 
0

与梅德叶戈罗夫的评论编辑查询我能加入这行代码来解决此问题后:

sum(minutes_worked * price_per_hour/60) as Price, 

所以我的SQL查询变成

SELECT SUM(labourentries.minutes_worked) AS minutes_worked, 
sum(minutes_worked * price_per_hour/60) as Price, 
count(labourtypes.id) AS amount, 
labourtypes.labourtype 
FROM labourtypes 
INNER JOIN labourentries ON labourtypes.id = labourentries.labourtype_id 
GROUP BY labourtypes.id 
相关问题