MySQL Aggregation and Window Functions Cheatsheet/Assign row numbers within each user

Rank a user's orders by recency.

Section: window functions

Assign row numbers within each user

sql
sql
SELECT
  user_id,
  id AS order_id,
  created_at,
  ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) AS rn
FROM orders;
Explanation

Helpful for picking latest rows per entity.

Learn the surrounding workflow

Compare similar commands or jump into common fixes when this command is part of a bigger troubleshooting path.

Related commands

Same sheet · prioritizing window functions
Calculate a running total
Compute cumulative revenue by day.
OpenIn sheetsqlsame section
Compare to the previous row with LAG
Calculate day-over-day change.
OpenIn sheetsqlsame section
Dense rank grouped totals
Rank categories by revenue without gaps.
OpenIn sheetsqlsame section
Count all rows
Return the total number of rows in a table.
Group rows and count them
Count orders by status.
Use SUM and AVG
Calculate totals and averages.