2016-10-28 10 views
0

Iは、各ユーザーIDの最小PCOUNTを有する行を取得したいグループ化値

userId period pcount 
a   01/03  100 
a   02/03  150 
a   03/03  200 
b   02/03  250 
...and so on.. 

に従う、ように私のテーブル構造であるユーザーIDに対する結果私は期間値を望まなかった場合は、以下のようであるべきだ。..

a  01/03 100 

、私がユーザIDによって、テーブルをグループ化し、PCOUNTのユーザーIDとMINを選択した可能性があります。

しかし、私は何をすべき、同様の期間を必要とするので..

私は紺碧にSQL Serverを使用していますが、それは変更される場合がありますので、標準のANSI SQLクエリをいただければ幸いです。

おかげ

+0

のほとんどはINNER JOIN作品を使用してROW_NUMBER

Select * From ( select row_number() Over(Partition by userId Order by pcount asc) as rn,* From yourtable ) A Where Rn = 1 

を通じて別のアプローチを扱っていますか? –

答えて

2

は、一般的には要求のこれらの種類は、あなたがどのようなデータベースを使用しているDBMS

SELECT A.* 
FROM yourtable A 
     INNER JOIN (SELECT userId, 
          Min(pcount) AS M_pcount 
        FROM yourtable 
        GROUP BY userId) B 
       ON A.userId = B.userId 
        AND A.pcount = B.M_pcount 
関連する問題