DB Quacks SQL Tutorial · Chapter 5

The ROW_NUMBER Awakens

Ninja analyst duck appears silently in dark goggles. Stealth mission! Find the oldest duck in each species group without collapsing groups like GROUP BY. Window functions preserve details while adding ranking magic!

Your task

Show each duck with their rank by age within their species group from the ducks table. You will be using window functions to rank ducks within each species.

Hint

Look for a window function that assigns sequential numbers to rows within partitions.

Expected result

A table showing each duck with their age rank within their species group.

Tables

duck_diaries (10 rows)

columntype
diary_idBIGINT
duck_idBIGINT
entry_dateDATE
diary_textVARCHAR
moodVARCHAR

duck_surveys (5000 rows)

columntype
survey_idBIGINT
duck_idBIGINT
ageBIGINT
favorite_foodVARCHAR
favorite_pondBIGINT
swimming_ratingBIGINT
migration_preferenceVARCHAR
social_behaviorVARCHAR
health_statusVARCHAR
activity_levelVARCHAR
survey_dateDATE
survey_locationBIGINT

ducks (15 rows)

columntype
idBIGINT
nameVARCHAR
ageBIGINT
speciesVARCHAR
birth_dateDATE
arrival_dateDATE

ponds (3 rows)

columntype
pond_idBIGINT
pond_nameVARCHAR
location_latDOUBLE
location_lngDOUBLE
capacityBIGINT
featuresVARCHAR[]
amenitiesVARCHAR[]

Database: https://dbquacks.com/data/databases/tutorial.duckdb

This page as markdown: https://dbquacks.com/tutorial/24.md

Start level 24 →

DuckDB docs for this lesson