2013-09-26 91 views
0

您好我有數據庫像如何在時間單個查詢運行2個查詢

name to Maths Science 
    stud1 stud2 30 50 
    **stud1 stud1 40 60** 
    stud2 stud2 20 90 
    **stud3 stud1 60 80** 

,當我查詢我的數據庫stud1我需要輸出作爲 ,我需要得到的值stud1爲自己他評爲和所有值的平均屬於他有**在上述

AVg(Maths) Maths 
    50   40 

任何一個可以建議我如何做到這一點查詢。

+0

所以你要找的40值是'name ='stud1',to ='stud1'',其中這兩列都是' stud1'? –

+0

是的我想要輸出如圖所示在第二個表中。 – user2787300

回答

0
SELECT Name, (SELECT AVG(maths) from tbl),MATHS from tbl 
+0

這將平均_all_所有學生_all_行_ –

0

的平均()函數是一組操作,其中作爲選擇是行操作。您不應該嘗試在單個查詢中將它們組合在一起,因爲它包含多餘的信息。不過,如果你想繼續這樣做:

select to, name, maths, science, (select avg(maths) from table), 
(select avg(science) from table) from table where to ="stud1"; 
0

嗯,不知道爲什麼,答案是傾向於忽略什麼是平均:

SELECT 
    AVG(Maths) AS AvgMaths, 
    MAX(IF(name=to), Maths, NULL)) AS Maths 
FROM some_table WHERE to = 'stud1' 

注:我想到的平均值爲: 43.(3排有'stud1',而不是2)

+0

我無法理解你的問題。 – user2787300

+0

@ user2787300這不是一個真正的問題。基本上,爲什麼表中的第一行不包含在平均值中(名稱是'stud1') – 2013-09-26 20:50:38

+0

這只是我數據庫的一個模型。而且我是初學者,所以我問了這個問題。 – user2787300