Start a conversation ↗

FORMULA & SQL / TOTALS

Rank rows by a value.
Tested, not guessed.

The Excel and Google Sheets formula and the SQL query, each run on the rows below. Open this with your own data ↗

The example rows

RowA: RegionB: RepC: AmountD: Order DateE: StatusF: Customer
2NorthAna1,2002026-03-01PaidJo Smith
3SouthBen4502026-03-15OpenRaj Patel
4NorthCy3002026-04-02PaidLee Wong
5EastAna980.502026-04-20PaidMia Ross
6NorthBen752026-05-05OpenJo Smith
7WestDee1,6402026-05-18PaidSam Okoro

The formula

Excel
=RANK(C2,$C$2:$C$7)

RANK(Amount (C2), the Amount column ($C$2:$C$7)) — which gives a value's rank in a list.

Run on the example rows:

RowResult
22
34
45
53
66
71

The SQL

PostgreSQL
SELECT *, RANK() OVER (ORDER BY amount DESC) AS rank_position
FROM sales
ORDER BY rank_position

Run on the example rows:

regionrepamountorder_datestatuscustomerrank_position
WestDee16402026-05-18PaidSam Okoro1
NorthAna12002026-03-01PaidJo Smith2
EastAna980.52026-04-20PaidMia Ross3
SouthBen4502026-03-15OpenRaj Patel4
NorthCy3002026-04-02PaidLee Wong5
NorthBen752026-05-05OpenJo Smith6
Other databases
MySQL
SELECT *, RANK() OVER (ORDER BY amount DESC) AS rank_position
FROM sales
ORDER BY rank_position
SQL Server
SELECT *, RANK() OVER (ORDER BY amount DESC) AS rank_position
FROM sales
ORDER BY rank_position
SQLite
SELECT *, RANK() OVER (ORDER BY amount DESC) AS rank_position
FROM sales
ORDER BY rank_position
BigQuery
SELECT *, RANK() OVER (ORDER BY amount DESC) AS rank_position
FROM sales
ORDER BY rank_position
Snowflake
SELECT *, RANK() OVER (ORDER BY amount DESC) AS rank_position
FROM sales
ORDER BY rank_position

Your own data

Paste your rows into the free tool and it writes this for your columns, then runs it on your data before you copy it. Open the tool ↗

Bring us the problem. We'll work through the system.

Your next
hard problem.↗