Row average with sqlite

I am working with sqlite database. Tables:

   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

      

etc. After these commands

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 

      

I got this result, on each line I have an id and dots associated with the id.

enter image description here

Now I would like to get the average of the rows, sorted descending in descending order. I want to:

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]

      

How can i do this? Thank.

+3


source to share


1 answer


If you mix all the point tables, you can simply calculate the average for each group:



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;

      

+2


source







All Articles