0

こんにちは、次のようなデータベースがあります

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

そして、データベースをスタッド1としてクエリすると、出力を取得する必要があります。彼が評価した自分自身のスタッド1の値を取得する必要があり、すべての値の平均が彼に属しており、上記の**があります

 AVg(Maths) Maths
    50           40

このクエリの実行方法を教えてください。

4

3 に答える 3

0
SELECT Name, (SELECT AVG(maths) from tbl),MATHS from tbl
于 2013-09-26T18:41:31.170 に答える
0

Avg() 関数はグループ操作であり、select は行操作です。冗長な情報が含まれているため、単一のクエリでそれらを結合しようとしないでください。ただし、先に進みたい場合は、次のようにします。

select to, name, maths, science, (select avg(maths) from table), 
(select avg(science) from table) from table where to ="stud1";
于 2013-09-26T18:47:03.697 に答える
0

うーん、答えが平均化されたものを無視する傾向がある理由がわからない:

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

注: 平均は 43 だと思います (2 行ではなく、3 行に 'stud1' が含まれています)。

于 2013-09-26T19:02:10.327 に答える