我有下表
Name | Subject | Marks
--------------------------
a M 20
b M 25
c M 30
d C 44
e C 45
f C 46
g H 20
在这里,我有一个“学生”表,我想
从学生表中获取每个科目的最大分数的学生的姓名,如以下输出。
Name | Subject | Marks
c M 30
f c 46
g h 20
这个基本查询应该可以满足您的要求。
SELECT Name, Subject, Max(Marks)
FROM Student
GROUP by Subject;
已在 SQLFiddle 中试用
注意:用于检查的 SQLite
您也可以使用其他函数和cte来获得结果..
例如:1
select B.Name,
A.Subject,
B.Marks
from ( select Subject,
max(Marks) as High_Marks
from Student
group by Subject
) a
join Student b
on a.subject = b.subject
and a.high_Marks = b.Marks
使用cte和dense_rank功能
;WITH cte
AS
(
SELECT
[Name],
[Subject],
[Marks],
dense_rank() over(partition BY [Subject] order by [Marks] DESC) AS Rank
FROM Student
)
SELECT * FROM cte WHERE Rank = 1;
您可以使用ROW_NUMBER函数仅返回每个主题的“最佳”行:
SQL混音
MS SQL Server 2008架构安装程序:
CREATE TABLE Student
([Name] varchar(1), [Subject] varchar(1), [Marks] int)
;
INSERT INTO Student
([Name], [Subject], [Marks])
VALUES
('a', 'M', 20),
('b', 'M', 25),
('c', 'M', 30),
('d', 'C', 44),
('e', 'C', 45),
('f', 'C', 46),
('g', 'H', 20)
;
查询1:
SELECT Name, Subject, Marks
FROM(
SELECT *, ROW_NUMBER()OVER(PARTITION BY Subject ORDER BY Marks DESC) rn
FROM dbo.Student
)X
WHERE rn = 1
结果:
| NAME | SUBJECT | MARKS |
--------------------------
| f | C | 46 |
| g | H | 20 |
| c | M | 30 |
问题内容: 我有下表 在这里,我有一个“学生”表,我想 从该学生表中获取从每个学科获得满分的学生的姓名,例如以下输出。 问题答案: 您可以使用ROW_NUMBER函数仅返回每个主题的“最佳”行: SQL小提琴 MS SQL Server 2008架构设置 : 查询1 : 结果 :
我有 3 张桌子 学生(id,姓名) 主题(id,name) 学生主题(学生标识,主题标识,标记) 我想选择通过所有科目的学生姓名(有分数的学生)。 我试过这个:
我想在每门课程中获得最高分,包括该课程的标题和参加该课程考试的学生姓名。我有这些表格,第一个学生 课程表 我还做了一张表格,让学生在课程考试中通过分数与课程联系起来 那我怎么能质疑呢。
问题内容: 我正在研究关键字提取问题。考虑非常普遍的情况 这给了我 很好 对于其中出现的任何新文档,是否有办法获得tfidf得分最高的前n个术语? 问题答案: 您必须做一点点的歌舞才能将矩阵转换为numpy数组,但这应该可以满足您的需求: 这给了我: 该电话确实是有用的,这里有它的文档。我们必须这样做,因为仅支持从小到大的排序。我们呼吁将维数减少到1d,以便可以使用排序后的索引来索引1d特征数组。
问题内容: 怎么做? 该问题的原标题是“ 在带有子查询的复杂查询中使用等级(@Rank:= @Rank + 1)-可以吗? ”,因为我一直在寻找使用等级的解决方案,但是现在我看到Bill所发布的解决方案是好多了。 原始问题: 我正在尝试组成一个查询,该查询将从给定定义顺序的每个组中获取最后一条记录: 表达式通常用于等级,但对我来说,在2个子查询中使用时,它看起来可疑,但仅初始化一次。这样行吗? 其
我有一个表员工与字段部门,员工和工资。我想要一个查询,以列出部门最高工资和该工资的员工姓名。 我知道这很简单。我在谷歌上搜索,但找到了这样的答案,只列出了部门和工资