私はSQLの初心者であり、アクセス強度とフォルダー名に従ってすべての最大値を取得しようとしており、それに応じてフォルダーへのグループを許可しています。MAX 関数を使用してみましたが、最大結果が 1 つしか返されませんでした。指定された結果を達成する方法についてのヘルプまたはガイダンスを事前に感謝します。
上部の表に添付されている jpg リンクと、下部の表の望ましい結果を参照してください。
ジョン
私はSQLの初心者であり、アクセス強度とフォルダー名に従ってすべての最大値を取得しようとしており、それに応じてフォルダーへのグループを許可しています。MAX 関数を使用してみましたが、最大結果が 1 つしか返されませんでした。指定された結果を達成する方法についてのヘルプまたはガイダンスを事前に感謝します。
上部の表に添付されている jpg リンクと、下部の表の望ましい結果を参照してください。
ジョン
RANK関数を使用してレコードを並べ替え、上位 1 つだけを選択できます。
WITH CTE AS
( SELECT Folder_name,
[User],
Access,
Group_Allowing,
[Rank] = RANK() OVER(PARTITION BY Folder_Name, [User] ORDER BY Access DESC)
FROM T
)
SELECT Folder_name,
[User],
Access,
Group_Allowing
FROM CTE
WHERE [Rank] = 1;
このPARTITION BY
句は GROUP BY に似ており、ランキングはグループごとに 0 から再び開始されます。order by は単純に、ランキングを行う順序を示します。