0

次のテーブルを使用:

id | name       | job      | rank
01   john         teacher    4
02   mark         teacher    2
03   phil         plummer    1
04   dave         teacher    7
05   jim          plummer    9
06   bill         plummer    2

各ジョブの最大2行を選択するにはどうすればよいですか(可能であれば、各グループのランクASCでソートして、各グループの下位2つのランクが選択されるようにします)。私が探している結果は次のとおりです。

02 mark teacher 2
01 john teacher 4
03 phil plummer 1
06 bill plummer 2

これは基本的にジョブごとにグループ化され、制限は2で、ランク別に並べ替えられます。GROUPBYとLEFTJOINを試してきましたが、これを行う方法がわかりません。GROUPING BYジョブを使用してジョブの「一時リスト」を作成する場合、そのジョブに複数回参加するにはどうすればよいですか。

4

1 に答える 1

4
SELECT  id, name, job, rank
FROM    TableName a
WHERE 
        (
           SELECT   COUNT(*) 
           FROM     TableName as f
           WHERE    f.job = a.job AND 
                    f.rank <= a.rank
        ) <= 2;
于 2013-03-08T13:54:05.750 に答える