2014-02-14 296 views
3

我的查詢是:平均的平均使用條件

SELECT avg(result) 
FROM `survey_result_full` 
WHERE `comp_id`='$corow[id]' 
    AND rater_type='riwter' 
    AND survey_id='$survey' 
    AND rater_id in (
     SELECT id 
     FROM raters 
     WHERE participate='$id' 
      AND `type`='$rt[id]' 
     ) 

在這裏,我會得到結果的所有平均:

id survey_id comp_id rater_id rater_type beh_id result 
---- --------- ------- -------- ---------- ------ ------ 
6198 79  204  180  riwter  573 4 
6576 79  204  181  riwter  573 4 
6577 79  204  181  riwter  574 4 

但我需要找到均線與行平均相同的beh_id

如果兩行有相同的beh_id那麼我需要首先找到這兩行的結果列的平均值,然後找到所有項目的平均值。

+1

聽起來像你需要一個'group by'子句,但不知道你到底在做什麼。 –

回答

0

也許某事像

SELECT AVG(avg_results) 
FROM (
    SELECT srf.beh_id, AVG(srf.result) as avg_results 
    FROM `survey_result_full` srf, `raters` r 
    WHERE srf.`comp_id`= '$corow[id]' 
    AND srf.rater_type = 'riwter' 
    AND srf.survey_id = '$survey' 
    AND srf.rater_id = r.id 
    AND r.participate ='$id' 
    AND r.`type` = '$rt[id]' 
    GROUP BY srf.beh_id) AS avgs 

,因爲你想要的東西似乎是平均數的平均值。

(我也重構了一下查詢,因爲你想要的是一個連接上評價者表)

1

如果你想要的是讓與[beh_id,平均],然後將查詢應結果是:

SELECT beh_id, avg(result) 
    FROM `survey_result_full` 
WHERE `comp_id`='$corow[id]' 
    AND rater_type='riwter' 
    AND survey_id='$survey' 
    AND rater_id in (
        SELECT id 
         FROM raters 
        WHERE participate='$id' 
         AND `type`='$rt[id]' 
        ) 
GROUP BY beh_id