2017-06-27 2 views
0

のサブクエリとの指示を組み合わせますそれぞれの名前(more details hereは、私はこのようになりますSQLiteのテーブルを持っているSQLiteの

id avg(points_a) 
white  46.0 [(46+0)/2] 
sparrow 44.0 [(0+44)/2] 
butch  18.5 [(11+26)/2] 
smith  18.0 [(11+25)/2] 
gordon 11.0 [(11+0)/2] 

は今、私は再と一致したいのですがsulting列id対応する列numberID_TABLE ID_TABLE.number LESS THAN 26です。私はすべてによってクエリ、1に新しい命令を組み合わせることを行うことができますどのように

76 46.0 [(46 + 0)/ 2]

25 44.0 [(0+44)/2] 
3  18.5 [(11+26)/2] 
76 18.0 [(11+25)/2] 
22 11.0 [(11+0)/2] 

:結果は(number|average)でなければなりません前のものと一緒に?

答えて

1

集計関数を機能させるには、JOINを実行してグループ化を少し変更する必要があります。

SELECT i.number, 
     avg(pts.points) AS average_points 
FROM (SELECT id_a AS id, points_a AS points FROM points_a_table 
     UNION ALL 
     SELECT id_b AS id, points_b AS points FROM points_b_table) AS pts 
INNER JOIN id_table i ON i.id = pts.id 
GROUP BY pts.id, i.number 
WHERE i.number < 26 
ORDER BY avg(pts.points) DESC; 
points_aまたは points_b内のすべての該当するレコードの id_tableで正確に一つのレコードがあると仮定すると、
1

元のクエリをサブクエリとして使用することは簡単です。これはあなたが望むものを与えてくれないのですか?

SELECT 
    idt.number, 
    avg_points 
FROM 
    id_table AS idt 
    INNER JOIN (
     SELECT id, 
      avg(points_a) AS avg_points 
     FROM (SELECT id_a AS id, points_a FROM points_a_table 
      UNION ALL 
      SELECT id_b AS id, points_b FROM points_b_table) 
     GROUP BY id 
     ) as x on x.id=idt.id 
WHERE 
    idt.number < 26; 
関連する問題