📅  最后修改于: 2023-12-03 15:05:17.150000             🧑  作者: Mango
In SQL, there are scenarios where you may want to retrieve the maximum value per ID from a table. This can be achieved using various SQL techniques such as GROUP BY
, SUBQUERIES
, or the WINDOW FUNCTIONS
. In this guide, we will explore these techniques and provide code snippets to demonstrate how to get the maximum value per ID using SQL.
Before diving into the code examples, let's assume we have a sample table called sample_table
with the following structure:
| id | value | |------|-------| | 1 | 10 | | 1 | 15 | | 2 | 20 | | 2 | 25 | | 3 | 30 | | 4 | 35 |
The GROUP BY
clause in SQL allows us to group rows based on a specific column or columns. To get the maximum value per ID, we can use GROUP BY
on the id
column and then apply the MAX
function on the value
column. Here's an example query:
SELECT id, MAX(value) AS max_value
FROM sample_table
GROUP BY id;
The result will be:
| id | max_value | |------|-----------| | 1 | 15 | | 2 | 25 | | 3 | 30 | | 4 | 35 |
Another approach is to use subqueries to retrieve the rows with the maximum value per ID. We can join the original table with a subquery that selects the maximum value for each ID. Here's an example query:
SELECT st.id, st.value
FROM sample_table st
JOIN (
SELECT id, MAX(value) AS max_value
FROM sample_table
GROUP BY id
) max_values ON st.id = max_values.id AND st.value = max_values.max_value;
The result will be the same as the GROUP BY
approach.
Window functions are a powerful feature in SQL that allow us to perform calculations across a set of rows. To get the maximum value per ID, we can use the ROW_NUMBER
function over the id
column partitioned by id
and ordered by value
in descending order. Then, we can filter the rows with row number 1. Here's an example query:
SELECT id, value
FROM (
SELECT id, value, ROW_NUMBER() OVER (PARTITION BY id ORDER BY value DESC) AS rn
FROM sample_table
) ranked
WHERE rn = 1;
The result will be the same as the previous approaches.
In this guide, we explored different techniques to retrieve the maximum value per ID using SQL. By using GROUP BY
, subqueries, or window functions, you can easily obtain the desired results. Choose the approach that suits your specific use case and enjoy the power of SQL!