sqlserver 分组查询每组最大值的一条数据
时间: 2024-05-16 09:18:07 浏览: 218
mysql获取分组后每组的最大值实例详解
5星 · 资源好评率100%
可以使用子查询或者窗口函数来实现。
使用子查询:
```
SELECT t1.*
FROM your_table t1
JOIN (
SELECT group_id, MAX(value) AS max_value
FROM your_table
GROUP BY group_id
) t2
ON t1.group_id = t2.group_id AND t1.value = t2.max_value
```
使用窗口函数:
```
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY value DESC) AS rn
FROM your_table
) t
WHERE rn = 1
```
这两种方法的思路都是先分组求出每个组的最大值,然后再根据最大值和分组字段与原表进行连接或筛选出符合条件的数据。区别在于子查询是将最大值和分组字段作为一个整体来进行连接,而窗口函数则是使用 ROW_NUMBER 函数标记每个组内的行,并筛选出 rn = 1 的行,这个方法相对来说更加简洁。
阅读全文