Advertisement
If you’ve been working with SQL for a while, you probably know that ranking data is one of those tasks that sounds simple but gets tricky fast. That’s where functions like DENSE_RANK come into play. They help you assign rankings to rows based on a specific order, but they do it in a way that keeps things fair and compact. Once you understand how DENSE_RANK works, you’ll find yourself reaching for it more often than you’d expect. Let’s break it down and see how you can use DENSE_RANK to organize your data without missing a beat.
At its core, DENSE_RANK is a window function. It’s used to assign a rank to rows within a partition of a result set, but it does it without leaving gaps in the ranking sequence.
Imagine you have a list of students and their exam scores. If two students tie for first place, DENSE_RANK gives them both a rank of 1. The next highest score gets a rank of 2 — no skipping. Compare that with the regular RANK function, where ties cause the next rank to jump by the number of ties.
Here’s a simple way to picture it:
Name | Score | DENSE_RANK |
---|---|---|
Alice | 95 | 1 |
Bob | 95 | 1 |
Charlie | 90 | 2 |
David | 85 | 3 |
As you can see, there are no missing numbers. It's clean, easy to follow, and perfect when you need consistent ranking.
When you use DENSE_RANK, SQL processes your data in a few clear steps:
Here’s a basic syntax example:
sql
CopyEdit
SELECT column_name,
DENSE_RANK() OVER (ORDER BY column_name) AS rank
FROM table_name;
If you add a PARTITION BY clause, you can restart the ranking inside each group.
Example:
sql
CopyEdit
SELECT department,
employee_name,
salary,
DENSE_RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS salary_rank
FROM employees;
In this case, every department will have its own set of salary rankings starting from 1.
It’s small details like these that make DENSE_RANK such a reliable tool when you need sorted data that still respects groupings.
There are certain cases where DENSE_RANK fits like a glove. Let's look at a few common ones:
If you’re building leaderboards, contest results, or anything where multiple people might have the same score, DENSE_RANK keeps things clean. Instead of confusing users with missing ranks, it treats equal results equally — which feels fair and transparent.
Example: Two employees with the same sales numbers both get a rank of 1. The next best salesperson gets 2, not 3.
If gaps in the ranking would make your results harder to read or explain, use DENSE_RANK. This is especially true when you’re presenting data to someone who isn’t familiar with how ranking normally works behind the scenes.
Say you’re running a report for a manager who wants a list of top performers. If your ranking suddenly jumps from 1 to 3 because two people tied, it might look like you made a mistake. DENSE_RANK prevents that confusion.
If you’re ranking items within different categories, you’ll want your ranks to start fresh for each group. DENSE_RANK makes this super easy with the PARTITION BY feature.
Example: Ranking best-selling products inside each product category.
It gives you clean, grouped rankings without any manual number crunching.
When You Need to Show Tiered Data Clearly
Sometimes, you need to group results into levels — like Gold, Silver, and Bronze categories — based on performance. DENSE_RANK helps you draw these lines neatly without missing numbers or creating confusing gaps. For instance, if three sales reps tie for top performance, they can all fall into the Gold tier without leaving awkward spaces in the Silver or Bronze groups. This keeps tiered reports smooth and easy for everyone to read.
Although DENSE_RANK is straightforward, there are a few things people get tripped up on.
Since DENSE_RANK depends completely on the order you specify, missing or misusing ORDER BY can lead to confusing results, always be clear about how you want to sort the data before ranking it.
Bad example:
sql
CopyEdit
SELECT name, salary, DENSE_RANK() OVER () AS rank FROM employees;
This gives you a dense rank based on whatever random order the database decides. Always pair it with an ORDER BY.
Good example:
sql
CopyEdit
SELECT name, salary, DENSE_RANK() OVER (ORDER BY salary DESC) AS rank FROM employees;
Now it ranks based on salaries, with the highest being first.
Some users mistakenly believe RANK and DENSE_RANK behave the same. They don’t.
Knowing when you need a tight sequence versus when you can allow gaps is key to picking the right one.
If you want separate rankings per group and you forget to use PARTITION BY, your results will mix groups together. Always double-check whether you need a fresh ranking per group or a global ranking.
Understanding how DENSE_RANK works can save you from a lot of unnecessary trouble when dealing with ranking problems. It’s simple, fair, and delivers clear results without any weird gaps. Whether you’re building leaderboards, ordering sales reports, or just trying to show the top performers in different categories, DENSE_RANK is the smart choice.
If you start using it in your projects, you’ll probably wonder how you ever handled rankings without it.
Advertisement
By Alison Perry / Apr 06, 2025
Explore how embedding AI helps optimize demand forecasting, inventory, shipping, and supplier relationships.
By Tessa Rodriguez / Apr 06, 2025
Discover how AI enhances spend compliance, boosts efficiency, and improves user experience with smarter, faster workflows.
By Alison Perry / May 03, 2025
Want to see yourself as a superhero or villain? Learn how Lensa AI transforms your selfies into stunning, otherworldly avatars in just a few taps
By Alison Perry / Apr 07, 2025
Explore the real savings and ROI impact of Business AI—automate tasks, improve accuracy, and grow your business faster.
By Tessa Rodriguez / Apr 07, 2025
Explore how companies use Business AI to automate IT tasks, detect issues early, and save time across operations.
By Alison Perry / Apr 05, 2025
Discover how AI tools simplify spend management through real-time tracking, automation, and improved cost control.
By Tessa Rodriguez / Apr 07, 2025
See how AI is being used in chatbots, recommendations, and feedback analysis to improve customer support across sectors.
By Tessa Rodriguez / May 03, 2025
Fireflies AI simplifies the meeting note-taking process by automatically transcribing, organizing, and sharing meeting highlights. Learn how to set it up
By Tessa Rodriguez / Apr 07, 2025
See how smart AI tools are reshaping HR in 2025 through automation, team insights, and faster decision-making.
By Alison Perry / May 21, 2025
Discover how to use Apple Intelligence and GenAI with Siri on iPhone and Mac for smarter, faster, voice-powered assistance.
By Tessa Rodriguez / Apr 07, 2025
Discover how AI improves the full revenue chain by enhancing sales performance and streamlining customer support tasks.
By Alison Perry / Jun 11, 2025
Can protein models scale faster? See how ProtST runs better on Intel Gaudi 2—unlocking bigger batch sizes, shorter training times, and efficient resource use for real-world bioinformatics workloads