2014-02-14 2 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

может быть STH как

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 
Смежные вопросы