Home > Database > Mysql Tutorial > How Can I Efficiently Retrieve Values Based on the Maximum of a Related Column in SQL?

How Can I Efficiently Retrieve Values Based on the Maximum of a Related Column in SQL?

Susan Sarandon
Release: 2025-01-17 19:07:10
Original
232 people have browsed it

How Can I Efficiently Retrieve Values Based on the Maximum of a Related Column in SQL?

Efficiently 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():

<code class="language-sql">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;</code>
Copy after login

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!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template