日期:2014-05-17  浏览次数:20397 次

求一个查询出最大ID的记录进行累加的语句
一张表如下:
姓名    次数     成绩
张三     1        80
李四     1        60
王九     1        90
张三     2        55
张三     3        66
李四     2        45
王九     2        50
想实现每个人最大次数成绩的累加,就是张三的第三次66 + 李四的第二次45 + 王九的第二次50
谢谢

------解决方案--------------------
;with f as
(
select * from tb t where not exists(select 1 from tb where 姓名=t.姓名 and 次数>t.次数)
)

select sum(成绩) from f

------解决方案--------------------
select sum(成绩)
from tab a
where not exists (
select 1
from tab
where 姓名= a.姓名    
and 次数> a.次数
)


------解决方案--------------------
;WITH a AS (
SELECT code+MAX(cishu)col1  FROM test
GROUP BY code
)SELECT SUM(chengji) FROM test WHERE code+cishu  IN (SELECT *FROM a)

------解决方案--------------------
优化下:
SELECT SUM(成绩) FROM TB t WHERE not exists(select 1 from tb where 姓名=t.姓名 and 次数>t.次数)