2017-06-27 92 views
3

我正在使用sqlite數據庫。 該表爲:使用sqlite的行平均數

ID_TABLE   POINTS_A_TABLE  POINTS_B_TABLE 
    id number  id_a points_a  id_a points_a 
--------------  ----------------  ---------------- 
smith 1   smith  11    ... 
gordon 22  gordon 11 
butch 3   butch  11 
sparrow 25  sparrow 
white 76  white  46 

等等。這些命令

select id, 
    points_a_table.points_a, points_b_table.points_a, points_c_table.points_a, points_d_table.points_a 
from id_table 
left join points_a_table on points_a_table.id_a = id_table.id 
left join points_b_table on points_b_table.id_a = id_table.id 
left join points_c_table on points_c_table.id_a = id_table.id 
left join points_d_table on points_d_table.id_a = id_table.id 
group by id 

後,我得到了這樣的結果,每行我有ID和與ID相關聯的點。現在

enter image description here

我想用行得到平均分,按降序排列的平均水平。 我要的是:

sparrow| 56 [(44+68)/2] 
white | 41 ([46+67+11)/3]  
smith | 33 [(11+25+65)/3] 
butch | 24 [(11+26+11)/3] 
gordon | 11 [11/1] 

我怎麼能這樣做? 謝謝。

回答

2

如果斯馬什都指向表一起,你就可以簡單地計算平均每個組:

SELECT id, 
     avg(points_a) 
FROM (SELECT id_a AS id, points_a FROM points_a_table 
     UNION ALL 
     SELECT id_a AS id, points_a FROM points_b_table 
     UNION ALL 
     SELECT id_a AS id, points_a FROM points_c_table 
     UNION ALL 
     SELECT id_a AS id, points_a FROM points_d_table) 
GROUP BY id 
ORDER BY avg(points_a) DESC; 
+0

太感謝你了 – Ford1892

+0

對不起,還有一個問題: 執行你的代碼後,如果我想將結果列'id'與'ID_TABLE'中相應的'number'匹配,我該怎麼做? 結果應該是: '25 | 56' '76 | 41' '1 | 33' 等等,謝謝。 – Ford1892

+0

這將是一個不同的問題。 (這可以通過左連接來解決。) –