


How Can I Efficiently Retrieve Values Based on the Maximum of a Related Column in SQL?
Jan 17, 2025 pm 07:07 PMEfficiently obtain data based on the maximum value of the relevant column
In scenarios where you need to retrieve a specific column value based on the maximum value of the related column and grouped by a third column, SQL provides an optimized solution. Consider the following table, which contains data for KEY, NUM, and VAL columns:
KEY | NUM | VAL |
---|---|---|
A | 1 | AB |
B | 1 | CD |
B | 2 | EF |
C | 2 | GH |
C | 3 | HI |
D | 1 | JK |
D | 3 | LM |
The goal is to retrieve the following results from this data:
KEY | VAL |
---|---|
A | AB |
B | EF |
C | HI |
D | LM |
While the query provided in the question achieves this result, there is a more elegant way using row_number()
:
select key, val from ( select t.*, row_number() over (partition by key order by num desc) as seqnum from table_name t ) t where seqnum = 1;
This query efficiently partitions rows based on the KEY column and assigns row numbers in descending order seqnum
within each partition. By selecting rows where seqnum
is equal to 1, we obtain the desired result and retain the desired grouping.
It's worth noting that this method differs slightly from the original query in that it always returns one row per key, whereas the original query may return multiple rows. If this behavior is desired, rank()
or dense_rank()
can be used instead of row_number()
.
The above is the detailed content of How Can I Efficiently Retrieve Values Based on the Maximum of a Related Column in SQL?. For more information, please follow other related articles on the PHP Chinese website!

Hot tools Tags

Hot Article

Hot tools Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Reduce the use of MySQL memory in Docker

How do you alter a table in MySQL using the ALTER TABLE statement?

How to solve the problem of mysql cannot open shared library

Run MySQl in Linux (with/without podman container with phpmyadmin)

What is SQLite? Comprehensive overview

Running multiple MySQL versions on MacOS: A step-by-step guide

How do I secure MySQL against common vulnerabilities (SQL injection, brute-force attacks)?

How do I configure SSL/TLS encryption for MySQL connections?
