分类汇总求和SQL语句

来源:百度知道 编辑:UC知道 时间:2024/06/14 01:56:42
数据库例如:
id 姓 名 奖 金
1 张三 20万
2 李四 10万
3 王一 5万
4 王一 50万
5 李四 6万
我要实现下面的效果
id 姓 名 奖 金
4 王一 55万

查出谁的奖金总合是最高的,SQL语句应该怎么写?
那如果ID不是唯一的呢,比如表是这样的
id 姓 名 奖 金
1 张三 20万
2 李四 10万
4 王一 5万
4 王一 50万
2 李四 6万

我要实现下面的效果
id 姓 名 奖 金
4 王一 55万
结果里必需要带有ID 的字段并且查出谁的奖金总合是最高的
这个ID字段是跟另一个表有关联的,所以结果里必需包含id这个字段
谢谢!

应该是如下:
假设姓名字段为xx,奖金字段为jj,表名为tb
select a.xx,max(a.jj1) from (select xx,sum(jj) as jj1 from tb group by xx) a group by a.xx

先从表中对每个人的奖金进行汇总,再从中找出最大的

对补充回答:
你的id是主键 如果要加上id 就没办法对某个人进行汇总了 而且就比如你的数据中王一的记录里 id要赋什么值呢,3还是4?这是矛盾的啊

补充的补充回答:
如果id不是唯一,可以如下:
select a.id,a.xx,max(a.jj1) from (select id,xx,sum(jj) as jj1 from tb group by id,xx) a group by a.id,a.xx

SELECT a.name AS "姓名",MAX(bonus) AS "奖金" FROM
(SELECT name,SUM(bonus) FROM 表名 GROUP BY name) a

name(名称),对应你的表中的名称列的列名
bonus(奖金),对应你的表中的奖金列的列名
a(子表的别名)

select top 1 姓名,sum(奖金) 奖金 from 表 group by 姓名 order by sum(奖金) desc

select 姓 名,sum(奖 金) from 表 group by 姓 名

select 姓名,奖金 from
(select max(姓名) as 姓名,max(sum(奖金)) as 奖金 from 表 Group by 姓名)