2016-07-19 8 views
1

SQL query to select distinct row with minimum valueに基づく質問質問は、我々が最小値で複数の行から1行を選択する方法

id game point  
1 x  1 
1 z  1 
2 x  2 

を得る(ゲームによってグループ化された点列の最小値を持っているIDを選択)どのように言及した質問から提案の回答を使用して

id game point 
1 x  1 
1 y  10 
1 z  1 
2 x  2 
2 y  5 
2 z  8 

: テーブルを考えてみましょうIDごとに1つの出力で回答を得る。両方の出力

id game point  
1 x  1 
2 x  2 

id game point  
1 z  1 
2 x  2 

が許容されます。

答えて

4

使用row_number()

select t.* 
from (select t.*, 
      row_number() over (partition by id order by point asc) as seqnum 
     from t 
    ) t 
where seqnum = 1; 
+0

ありがとう!素晴らしい。それは私にとっての発見です。 –

+0

私が分割したいフィールドを追加した場合はどうすればいいですか?これは 'filial'です。 'cast by(varchar(MAX)のID)+ cast(varchar(MAX)のfilial)'以外のもっと洗練されたソリューションはありますか? –

+0

@ VadimShkaberda。 。 。 'idによるパーティション分割、by。 。 。 '。 –

-1

私たちは、サブクエリを使用して、すべてのポイントのエントリが異なっている(各IDについて、それは我々がそれのゲームで各IDの最小値を得ることができますので、ゲームだ)と仮定し、内部結合2つの条件があれば、あなたは結果を待っています。それがあなたと連動しない場合、私は別の解決策を得ます:

関連する問題