2017-08-13 9 views
0

に基づいてデシベルでの平均値のスコアは、今私がどのように見えるテーブル「UniqueIDを」持っていることを、クエリ構築ん:私が欲しいものどのように私は別の列

+----+-----------------+------+-------+------------+ 
 
| id | uniqueid  | name | score | date  | 
 
+----+-----------------+------+-------+------------+ 
 
| 1 | bob1   | bob |  4 | 02-10 | 
 
| 2 | bob2   | bob | 49 | 02-15 | 
 
| 3 | bob3   | bob | 48 | 03-01 | 
 
| 4 | cari1   | cari | 76 | 02-15 | 
 
| 5 | cari2   | cari | 60 | 02-16 | 
 
| 6 | cari3   | cari | 71 | 03-05 | 
 
| 7 | john1   | john | 54 | 01-05 | 
 
| 8 | john2   | john | 56 | 02-13 | 
 
| 9 | john3   | john | 53 | 03-13 | 
 
+----+-----------------+------+-------+------------+

がにあります各名前の平均スコアを取る。私はの線に沿って何か得るだろう最後にそう:

+----+--------- 
 
|name | score | 
 
+----+--------- 
 
|bob | 33.6 | 
 
|cari | 69 | 
 
|john | 54.3 | 
 
---------------

以降のデータベースに追加され、より名前があるかもしれませんが、今、私はちょうどこれを行うに焦点を当ててきたため1つの名前のために。

'SELECT * from uniqueids where name =' bob 'and SELECT AVG(score)'しかし、これは私にとってはうまくいかず、私の構文には誤りがあります。たとえそれがあったとしても、それはボブのためにしか行いませんが、私はそれをそれぞれの名前に対して行う必要があります。

このクエリを取得するために私が何が必要なのかを知るためのアイデアは何ですか?

答えて

2

これはかなり標準的なSQLクエリです。 avg関数を適切なgroup by句(および結果を特定の名前に限定する場合は、where句)と組み合わせるだけです。

select name, avg(score) as "average score" 
from uniqueids 
where name = 'bob' -- remove this line if you want averages for all names 
group by name 

Sample SQL Fiddle

+1

ありがとうございます。これは完璧です。 – Milos

0

選択名、平均(スコア)の名前でUniqueIDを 群からスコア。 これは、あなたが希望する答えを得るのに役立ちます。