【发布时间】:2019-04-20 16:58:03
【问题描述】:
我最近开始学习基本插入和选择之外的 tsql,我有我训练的测试数据库,但有一个查询我无法真正开始工作。
该查询中使用了 3 个表,图中有简化的字段和关系
我有 2 个以下查询 - 第一个只是显示学生和每个科目的分数。其次是做几乎我想要达到的目标 - 展示学生和他们获得的最大分数,所以前。 subject1 - (标记)1、5、3、4 计数 - 4 subject2 - (标记)5、4、5 - 计数 - 3 查询显示 4 并且根据我检查的结果返回正确的结果,但我还想要一件事 - 只是为了显示有最大数量标记的主题的名称,所以在示例案例中 - subject1
--Query 1--
SELECT s.Surname, subj.SubjectName, COUNT(m.Mark) as Marks_count
FROM marks m, students s, subjects subj
WHERE m.StudentId = s.StudentNumber and subj.SubjectNumber = m.SubjectId
GROUP BY s.Surname, subj.SubjectName
ORDER BY s.Surname
--Query 2--
SELECT query.Surname, MAX(Marks_count) as Maximum_marks_count FROM (SELECT s.Surname, subj.SubjectNumber, COUNT(m.Mark) as Marks_count
FROM marks m, students s, subjects subj
WHERE marks.StudentId = s.StudentNumber and subj.SubjectNumber = m.SubjectId
GROUP BY s.Surname, subj.SubjectName) as query
GROUP BY query.Surname
ORDER BY query.Surname
--Query 3 - not working as supposed--
SELECT query.Surname, query.SubjectName, MAX(Marks_count) as Maximum_marks_count FROM (SELECT s.Surname, subj.SubjectNumber, COUNT(m.Mark) as Marks_count
FROM marks m, students s, subjects subj
WHERE marks.StudentId = s.StudentNumber and subj.SubjectNumber = m.SubjectId
GROUP BY s.Surname, subj.SubjectName) as query
GROUP BY query.Surname, query.SubjectName
ORDER BY query.Surname
部分查询1结果
查询2的一部分,不幸的是查询3结果
问题是,当我添加到 select 语句中的主题名称时,我得到了来自查询一的结果 - 没有更多的最大分数,只有学生、科目和每个科目的分数。
如果有人能说出我所缺少的,我将不胜感激:)
【问题讨论】:
-
如果您正在学习 SQL,请学习使用正确、明确、标准
JOIN语法。
标签: sql sql-server tsql aggregate-functions