2017-12-27 3 views
-4

他の列を別名として使用している間に1つの列の平均を計算したい場合は、他のデータに影響を与えるため、グループを使用できません。AVG(column1)DISTINCT(column2)while

id  name  price 
---------------------- 
1  name1  200 
2  name2  200 
3  name3  100 
3  name3  100 

でグループ外に私は、列価格の平均をしたいが、重複行があるので、私はちょうどAVG(価格)を書くことができず、また、私は代わりに私が明確な上を使用したい、価格に個別の使用カントGROUPBY

AVG(DISTINCT price) 
+1

サンプルデータと予想される結果を投稿してください。 –

+1

あなたの質問は、このコメントを書いている時点では、全く答えられていません。予想される出力に沿ってサンプル入力を表示してください。 –

+0

私は1つの列価格を持つ1つのテーブルがあります。そして、重複したデータが存在する可能性があるため、私は別のものを使用したいと思います。代わりに価格列に別のものを使用するのではなく、id列を別名として使用します。 –

答えて

-1

を使用せずにidが、これを試してみてください。

SELECT AVG(DISTINCT price) FROM tableName; 
+0

タイトル 'AVG(column1)DISTINCT(column2)' avgと他の列を読み込み – janith1024

0

テーブル全体と異なるIDで平均価格を取得するには、まず同じIDに基づいて重複データを除外する必要があります。次のクエリはIDごとに単価が高い単価行を選択します。あなたは、あなたは最低価格を選択したい場合は、個別のデータを持っていたら、それはa.price < b.price

select distinct a.* 
from table1 a 
left join table1 b on a.id = b.id 
and a.price < b.price 
where b.id is null; 

a.price > b.priceには変更後、ID 3の200を取ることができ、あなたのサンプルデータを考慮ID 3の3つの価格100及び200があります適用 avg()

select avg(price) 
from (select distinct a.* 
     from table1 a 
     left join table1 b on a.id = b.id 
     and a.price < b.price 
     where b.id is null 
) t; 

それとも

select avg(a.price) 
from table1 a 
left join table1 b on a.id = b.id 
and a.price < b.price 
where b.id is null; 

DEMO rexteにおけるいくつかの書式設定の問題がありますあなたはここにいるのでfiddle link

関連する問題