2011-07-03 29 views
0

私はこの出力を与えたこのクエリ平均 - mysqlの

SELECT salary 
    FROM worker W 
    JOIN single_user U ON u.users_id_user = W.single_user_users_id_user 
    JOIN university_has_single_user US ON US.single_user_users_id_user = U.users_id_user 
    JOIN course C ON C.id_course = US.course_id_course 
    JOIN formation_area FA ON FA.id_formation_area = C.formation_area_id_formation_area 
    WHERE FA.area = "Multimédia" 
GROUP BY users_id_user 

を...持っている:

salary 
-------- 
1400.00 
800.00 

は、どのように私は、この出力の平均を計算することができますか?私が追加した場合:

SELECT round(avg (salary), 0) 

...出力は、平均ではなく1400.00と800.00であり、グループではありません。

答えて

1

用途:

SELECT AVG(DISTINCT salary) 
    FROM worker W 
    JOIN single_user U ON u.users_id_user = W.single_user_users_id_user 
    JOIN university_has_single_user US ON US.single_user_users_id_user = U.users_id_user 
    JOIN course C ON C.id_course = US.course_id_course 
    JOIN formation_area FA ON FA.id_formation_area = C.formation_area_id_formation_area 
    WHERE FA.area = "Multimédia" 

salary列を集計、per the documentation, the values you see are arbitrary (can't be guaranteed 100% of the time)に包まれていませんので。

通常、別の値の平均を取得するには派生テーブルが必要ですが、MySQL's AVG supports using DISTINCT within itです。

+0

よろしくお願い致します。 – anvd

+0

私が持っている問題は、例えば2つのコースを持っている人が給料を2回繰り返したことです。今すぐ細かい – anvd

+0

しかし、別の人のために同じ給与をすることができます.. 私の質問はそこに別に置く必要がありますか? –