mysql查询显示高于平均值的结果,在其总和中使用两个表

时间:2018-05-20 17:11:38

标签: mysql sql

我希望有一个查询只显示高于平均水平的合同费用以及合同ID,我用这个来创建我的平均值:

SELECT AVG(average_cost)
FROM (
SELECT SUM(contracts.hours*staff.rate) AS average_cost
FROM contracts
INNER JOIN staff ON contracts.staff_id = staff.staff_id
GROUP BY contracts.contract_id
) AS inner;

我希望结果显示contract_id以及group by,即使它显示的是结果的contract_id高于平均值。只是很难获得一个查询来显示高于平均值的结果,这个平均值比我习惯的要复杂得多。感谢帮助,谢谢。

使用一些示例数据编辑*,表格比这更复杂,但我希望这有助于理解

contracts

contract_id   hours   staff_id
55            30       10
45            25       11
43            30       12
41            12       11
67            20       12   
49            20       13


staff

staff_id   rate
10         50 
11         45
12         80
13         45

因此,上述平均合约成本为1,344.167或左右。对于这个例子,我希望结果显示成本高于平均值的合同的contract_id。

results

contract_id   
55            
43            
67

3 个答案:

答案 0 :(得分:0)

我对你的问题了解得很多,我认为你正在寻找这个:

   select contract_id
from contracts join staff on (contracts.staff_id = staff.staff_id)
where (hours*rate) > 
(select avg(hours*rate)
from contracts join staff on (contracts.staff_id = staff.staff_id)
)

答案 1 :(得分:0)

这是一种方法:

%

答案 2 :(得分:0)

我有一个可以帮助你的例子:

SELECT first_name, last_name, invoice_amount
        FROM students 
        INNER JOIN invoices 
        ON students.id_student = invoices.id_student
        WHERE invoice_amount > (select avg(invoice_amount) from invoices)