2014-02-17 42 views
1

我想尋求我的查詢一些幫助......我想要做的是,如果特定aticoaic是表中的空...的interview_sumother_sum到特定aticoaic應空太....任何人都可以知道如何做到這一點?過濾和限制在查詢

圖片電流輸出:enter image description here

當前查詢:查詢我仍給號碼other_sum或interview_sum甚至其空。

SELECT DISTINCT 
IF(t.inttotal=NULL,0,(SELECT SUM(t2.inttotal) 
FROM app_interview2 AS t2 
WHERE t2.atic = t.atic AND t2.inttotal>0)/7) 
AS interview_sum, 

IF(o.ototal=NULL,0,(SELECT SUM(o2.ototal) 
FROM other_app2 AS o2 
WHERE o2.oaic = o.oaic AND o2.ototal>0)/7) 
AS other_sum, 

atid, 
atic, 
atname, 
region, 
town, 
uniq_id, 
position, 
salary_grade, 
salary 
FROM app_interview2 AS t, other_app2 AS o 
GROUP BY t.atname HAVING COUNT(DISTINCT t.atic) 

回答

1

我做了幾個假設:

  • 你可能有一個表,app_interview2.atic和other_app2.oaic是外鍵,但因爲你不同意,我得出的表在FROM條款中。
  • 這假定atname對於atid總是相同的。
  • 你也除以7--我認爲是得到平均值,所以我使用了AVG函數。

解決方案---

SELECT t1.id AS atid 
     ,interview.atname AS atname 
     ,COALESCE(interview.interviewsum, 0) AS interviewsum 
     ,COALESCE(interview.interviewavg,0) AS interviewavg 
     ,COALESCE(other.othersum, 0) AS othersum 
     ,COALESCE(other.otheravg) AS otheravg 
FROM (SELECT DISTINCT atid AS id 
     FROM app_interview2 
     UNION 
     SELECT DISTINCT oaic 
     FROM other_app2) AS t1 
LEFT JOIN (SELECT atid, atname, SUM(inttotal) AS interviewsum, AVG(inttotal) AS interviewavg 
      FROM app_interview2 
      GROUP BY atid, atname) as interview 
    ON interview.atid = t1.id 
LEFT JOIN (SELECT oaic, SUM(ototal) AS othersum, AVG(ototal) AS otheravg 
      FROM other_app2 
      GROUP BY oaic) AS other 
    ON other.oaic = t1.id; 

- 如果給你所希望看到的結果,我會用它的主鍵我的表更換T1派生表FROM子句中如上所述,可能有那些列(例如,地區,城鎮等),我不包括