SQL Query

SQL Server: SQL Query to Rank Rows

SQL Server guide: Assign rankings using ROW_NUMBER, RANK, or DENSE_RANK window functions.

This guide is specifically for SQL Server syntax.

SQL Query to Rank Rows

Assign rankings using ROW_NUMBER, RANK, or DENSE_RANK window functions.

Quick Answer

SELECT name, salary, RANK() OVER (ORDER BY salary DESC) as rank FROM employees;

Explanation

ROW_NUMBER gives unique sequential numbers. RANK gives same rank to ties but skips numbers. DENSE_RANK gives same rank but doesn't skip.

Query Variants

Row Number

SELECT name, salary, ROW_NUMBER() OVER (ORDER BY salary DESC) as row_num FROM employees;

Rank

SELECT name, salary, RANK() OVER (ORDER BY salary DESC) as rank FROM employees;

Dense Rank

SELECT name, salary, DENSE_RANK() OVER (ORDER BY salary DESC) as dense_rank FROM employees;

Partitioned

SELECT name, department, salary, RANK() OVER (PARTITION BY department ORDER BY salary DESC) as dept_rank FROM employees;

Pro Tips

  • ROW_NUMBER: 1, 2, 3, 4...
  • RANK: 1, 2, 2, 4... (skips after ties)
  • DENSE_RANK: 1, 2, 2, 3... (no skip)

Related SQL Queries

Continue learning with more SQL query examples:


SQL Server-Specific Notes

This page covers SQL Server syntax. Other databases may have different syntax for similar operations.

Related Content

From Our Blog

Try it yourself

Practice this query in our interactive SQL sandbox.