group by 取字段最大值
时间: 2023-12-06 16:05:42 浏览: 47
以下是两种使用group by取字段最大值的SQL语句:
1.使用max()函数取最大值
```sql
SELECT surgery_part, MAX(score) FROM tmp GROUP BY surgery_part;```
2.使用子查询和limit关键字取最大值
```sql
SELECT * FROM (
SELECT * FROM tmp ORDER BY score DESC LIMIT 10000
) GROUP BY surgery_part;
```
相关问题
LambdaQueryWrapper group by 取最大值
如果您是指在使用 MyBatis-Plus 的 LambdaQueryWrapper 进行分组查询并取某个字段的最大值,可以使用如下方式:
```
QueryWrapper<Entity> queryWrapper = new QueryWrapper<>();
queryWrapper.select("group_id", "max(score)").groupBy("group_id");
List<Map<String, Object>> result = entityMapper.selectMaps(queryWrapper);
```
在这个示例中,我们使用 `select` 方法选择了需要查询的字段,其中第二个参数是 `max(score)`,表示我们要查询 `score` 字段的最大值。然后使用 `groupBy` 方法分组查询,这里是按照 `group_id` 分组。最后使用 `selectMaps` 方法进行查询,返回的结果是一个 `List<Map<String, Object>>` 类型的数据,其中每个 Map 表示一条记录的结果,键是字段名,值是对应的值。
请注意,以上示例中使用的是 QueryWrapper 而不是 LambdaQueryWrapper,因为在 MyBatis-Plus 中,QueryWrapper 支持更多的查询功能,并且也可以使用 Lambda 表达式。如果您一定要使用 LambdaQueryWrapper 进行分组查询,可以使用 `groupBy` 方法进行分组,然后使用 `max` 方法取最大值,具体代码如下:
```
LambdaQueryWrapper<Entity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.select(Entity::getGroupId, Functions.max(Entity::getScore)).groupBy(Entity::getGroupId);
List<Map<String, Object>> result = entityMapper.selectMaps(lambdaQueryWrapper);
```
在这个示例中,我们使用 `select` 方法选择了需要查询的字段,其中第二个参数是 `Functions.max(Entity::getScore)`,表示我们要查询 `score` 字段的最大值。然后使用 `groupBy` 方法分组查询,这里是按照 `group_id` 分组。最后使用 `selectMaps` 方法进行查询,返回的结果是一个 `List<Map<String, Object>>` 类型的数据,其中每个 Map 表示一条记录的结果,键是字段名,值是对应的值。
sql group by分组后取某个字段的最大值
可以使用以下 SQL 语句来分组后取某个字段的最大值:
```
SELECT group_field, MAX(max_field)
FROM table_name
GROUP BY group_field;
```
其中,`group_field` 是用于分组的字段,`max_field` 是需要取最大值的字段,`table_name` 是表名。这条 SQL 语句会将表按 `group_field` 分组,然后取每组中 `max_field` 的最大值。