2017-06-27 3 views
3

Ich arbeite mit einer SQLite-Datenbank. Die Tische sind:Durchschnitt nach Zeilen mit 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 

und so weiter. Nach diesen Befehlen

Ich habe dieses Ergebnis, auf jeder Zeile habe ich die ID und die Punkte mit der ID verbunden.

enter image description here

Jetzt würde Ich mag ein durchschnittlich Punkte von Reihe bekommen, sortiert durch Durchschnitt in absteigender Reihenfolge. Was ich will, ist:

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] 

Wie kann ich das tun? Danke.

Antwort

2

Wenn Sie zusammen alle Punkttabellen smush, können Sie berechnen dann einfach den Mittelwert für jede Gruppe:

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

vielen Dank – Ford1892

+0

sorry, noch eine Frage: nach dem Ausführen von Code, wenn ich will passe die resultierende Spalte 'id' mit der entsprechenden' Zahl' in 'ID_TABLE' an, wie kann ich das machen? Das Ergebnis sollte sein: '25 | 56' ' 76 | 41' '1 | 33' und so weiter, danke. – Ford1892

+0

Das wäre eine andere Frage. (Was mit einem linken Join gelöst werden kann.) –

Verwandte Themen