3

次のような結果セットを作成するクエリがあります。

Rank   Name
1      Fred
1      John
2      Mary
2      Fred
2      Betty
3      John
4      Betty
4      Frank

次に、各名前の最低ランクを選択する必要があります。たとえば、次のようになります。

Rank   Name
1      Fred
1      John
2      Mary
2      Betty
4      Frank

これは TSQL 内で実行できますか?

4

3 に答える 3

6
SELECT MIN(Rank) AS Rank, Name
FROM TableName
GROUP BY Name
于 2012-06-20T14:56:15.677 に答える
4

はい

select name, min(rank)
from nameTable
group by name
于 2012-06-20T14:56:19.920 に答える
3

Paul + Kevinが指摘しているように、集計から値を返す単純なケースは、etcを使用して抽出できます(予約語であるMIN / MAXことに注意してください)。RANK

より一般的/複雑なケースでは、たとえば2番目/ N番目に高いランクを見つける必要がある場合、PARTITIONs withROW_NUMBER()を使用してランク付けを行い、ランクでフィルタリングできます。

SELECT [Rank], [Name]
FROM
(
    SELECT [RANK], [Name], 
           ROW_NUMBER() OVER (PARTITION BY [Name] ORDER BY [Rank]) as [RowRank]
    FROM [MyTable]
) AS [MyTableReRanked]
WHERE [RowRank] = @N
ORDER BY [Rank];
于 2012-06-20T15:25:08.513 に答える