📜  mysql select row with max value group by - SQL (1)

📅  最后修改于: 2023-12-03 14:44:27.606000             🧑  作者: Mango

MySQL中按分组选择最大值的行 - SQL

在MySQL中,在对数据进行分组处理时,有时需要选择每个组中某个列的最大值。本文将介绍如何使用MAX()函数和GROUP BY子句来实现此功能。

语法

下面是选择每个组中某个列的最大值的SQL语句的基本语法:

SELECT col1, col2, MAX(col3)
FROM table_name
GROUP BY col1, col2;

在上面的语法中,我们选取了列col1col2以进行分组,然后使用MAX()函数来获取每个组中col3的最大值。

示例

假设我们有以下名为sales的表,其中包含有关销售的信息:

+--------------+------------+--------+
| salesman_id  | date       | amount |
+--------------+------------+--------+
| 1            | 2021-01-01 | 100    |
| 1            | 2021-01-01 | 200    |
| 2            | 2021-01-01 | 150    |
| 2            | 2021-01-02 | 50     |
| 1            | 2021-01-02 | 300    |
+--------------+------------+--------+

如果我们想要为每个销售员获取其最大销售额及其日期,则可以使用以下SQL查询:

SELECT salesman_id, date, MAX(amount) as max_amount
FROM sales
GROUP BY salesman_id, date;

查询结果如下:

+--------------+------------+------------+
| salesman_id  | date       | max_amount |
+--------------+------------+------------+
| 1            | 2021-01-01 | 200        |
| 1            | 2021-01-02 | 300        |
| 2            | 2021-01-01 | 150        |
| 2            | 2021-01-02 | 50         |
+--------------+------------+------------+
解释

上面的查询首先按salesman_iddate两个列进行分组,并在每个组中选择amount的最大值。然后,我们通过SELECT语句将分组列和最大值作为结果返回。

结论

在MySQL中,使用MAX()函数和GROUP BY子句可以轻松选择每个组中某个列的最大值。这对于数据分析和报告非常有用。