我希望有一个查询只显示高于平均水平的合同费用以及合同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
答案 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)