我在SQL Server
中有一个这样的表:
Id Name Grade Marks
1 ABC 8 150
1 DEF 9 200
2 GHI 10 180
2 JKL 8 155
3 MNO 9 150
3 PQR 10 200
我需要为每个Marks
以及Grade
和ID
获取最高Name
。
输出应该是这样的:
Id Name Grade Marks
2 JKL 8 155
1 DEF 9 200
3 PQR 10 200
这就是我试过的
从T1选择ID,名称,等级,标记 中的标记(按等级从T1组中选择最大(标记))
这是如此不成熟的尝试,我在这里发布它并且我不知道其他方法来尝试它....
答案 0 :(得分:4)
你可以这样做:
;with cte as
(
select
*,
row_number() over(partition by Grade order by Marks desc) rn
from TableName
)
select * from cte where rn = 1
答案 1 :(得分:0)
$this->email->set_mailtype("html");
答案 2 :(得分:0)
SELECT
t1.ID
,t1.NAME
,t1.Grade
,t1.Marks
FROM t1
INNER JOIN (
SELECT Grade
,max(Marks) AS highest_marks
FROM t1
GROUP BY Grade
) AS TEMP ON t1.Marks = TEMP.highest_marks
AND t1.Grade = TEMP.Grade
答案 3 :(得分:-1)
这不是最好的方法,但你可以试试这个。!!
with cte as
(
select id,max(marks)as m from test group by id
)
select t.id,t.sub,t.grade,t.marks from test t
inner join cte c on c.id=t.id and t.marks=c.m