2017-08-10 39 views
-1

有两个表格,有一个预期结果,结果是计算每次参与的总成本,每次参与期间进行多次测试,每个测试的成本范围(所有设置值) ,预期的结果必须在EngagementId, EngagementCostSQL对表格的计算

的2个表来看,有有各自的领域

- EngagementTest (EngagementId, TestId) 
- Test (TestId, TestCost) 

enter image description here

一个怎样去计算每个参与的成本。

这是据我设法得到

SELECT EngagementId, COUNT(TESTId) 
    FROM EngagementTest 
    GROUP BY EngagementId; 
+4

您是否尝试过的东西没有?堆栈溢出不是免费的家庭作业服务。 –

+0

我使用了COUNT函数,但很快就意识到我无法使用它完成任务,我移动了一些东西,仍然无法弄清楚该做什么,还有一个完整的其他任务,但这是我确实无法完成的任务, t了解 –

+0

请发布您试用过的内容 – Eli

回答

0

尝试TestCost列的SUM,而不是一个COUNTCOUNT只是告诉你行数。 SUM将行内的值相加并给出总数。另外,您的现有查询实际上并未使用包含成本数据的表。你可以通过INNER JOIN这两个表通过TestId然后GROUP BY这个EngagementId,这样你就可以得到每次参与的总和。

事情是这样的:

SELECT 
    ET.EngagementId, 
    SUM(T.TestCost) 
FROM 
    EngagementTest ET 
    INNER JOIN Test T 
    ON T.TestId = ET.TestId 
GROUP BY 
    ET.EngagementId 
+1

感谢您的帮助,它工作 –

0

它可以使用下面的查询来实现。

SELECT i.EngagementId, SUM(TestCost) 
FROM EngagementTest i 
INNER JOIN Test t 
ON e.TestId = t.TestId 
GROUP BY i.EngagementId 
+0

进行求和和分组,查询是正确的,但更好的质量答案将解释OP和未来读者的代码 - 尤其是因为OP显然是SQL中的初学者。否则,不一定清楚代码的作用或哪些部分是重要的。 – ADyson