2013-11-03 30 views
0

嘿,你們介意檢查我是否正確地做了這件事嗎?我被困在這個問題上:卡在SQL中的查詢

產生一個查詢,以顯示所有會計人員的平均工作成本高於平均工作成本的會計師姓名及其平均工作成本(四捨五入到小數點後兩位)所有工作。

SELECT 
    a.name + a.surname, 
    SUM(jt.cost * (DATEDIFF(mi, time_complete, time_start))) % SUM(job_id) AS average_job_cost 
FROM accountant AS a 
LEFT OUTER JOIN job AS j ON a.staff_id = j.staff_id 
LEFT OUTER JOIN job_type AS jt ON jt.job_type_id = j.job_type_id 
WHERE average_job_cost > (SELECT SUM(jt.cost * (DATEDIFF(mi, time_complete, time_start))) % SUM(job_id); 
+1

作爲一個觀察,你的子查詢不包含'from'條款,導致我懷疑,這將工作。 –

+2

你和Josh [在相同的課程](http://stackoverflow.com/q/19755097/73226)? –

+0

你正在使用哪些DBMS? – jpw

回答

0

像這樣的東西(從原來的使用CLIENT_ID編輯上的其他問題如發現)

WITH jobinfo as 
(
    SELECT j.client_id, AVG(jt.cost * (DATEDIFF(mi, timecomplete, timestart))) as avgerage 
    FROM job as j 
    JOIN job_type as jt ON j.jobtype_id = jt.jobtype_id 
    GROUP BY j.client_id 
), avgAll AS 
(
    SELECT AVG(average) as aall 
    FROM jobinfo 
) 
SELECT 
    c.client_id, 
    c.name + c.surname, 
    c.phone, 
    c.email_address, 
    j.avgerage 
FROM client as c 
JOIN jobinfo j ON c.client_id= j.client_id 
WHERE j.avgerage > (SELECT aall FROM avgALL) 
ORDER BY j.avgerage DESC