Syntax:
SELECT <columns>,
RANK() OVER (PARTITION BY <column_name_as_partition_definition> ORDER BY <column_name>) (optional: alias - AS <column_alias>)
FROM <table>
(optional: ORDER BY <column_names>)
Example1: Top 10 Transactions
SELECT TOP(10) RANK() OVER (ORDER BY TransactionAmount DESC) AS TARank, * FROM Sales.CustomerTransactions ct
Example2: Top 3 Transactions Per Customer
;WITH BASE AS (SELECT RANK() OVER(PARTITION BY ct.CustomerID ORDER BY TransactionAmount DESC) AS TARank, * FROM Sales.CustomerTransactions ct) SELECT * FROM BASE b WHERE b.TARank < 4 ORDER BY b.CustomerID, b.TARank;