我的指示是:“打印教师的有序列表和他们分配给学生的A的数量。按照A的数量(从最低到最高)排序输出,并忽略没有指定A的教师”
这就是我所拥有的(http://pastebin.com/pKwc6cSK):
Use Student_Course59
SELECT INSTRUCTOR
FROM Section RIGHT OUTER JOIN Grade_report
ON Section.SECTION_ID = Grade_report.SECTION_ID
WHERE GRADE IS NOT NULL
AND INSTRUCTOR IS NOT NULL
以下是我的表格:
我无法弄清楚如何计算特定教练分配的A数。 非常感谢!!
答案 0 :(得分:0)
我认为您应该使用此查询来查找已分配的特定教师。
SELECT INSTRUCTOR FROM Section
RIGHT OUTER JOIN Grade_report
ON Section.SECTION_ID = Grade_report.SECTION_ID
WHERE Grade_report.GRADE IS NOT NULL AND
Section.INSTRUCTOR IS NOT NULL
答案 1 :(得分:0)
从屏幕截图看,您似乎正在运行SQL Server版本。如果这是SQL Server 2005或更高版本,您现在可以使用SUM作为“窗口函数”,这意味着它可以采用OVER(PARTITION BY)意味着这样的东西可能有效:
请注意,语法取自您的示例,但如果您提供了一个小提琴示例,那么它会更好用:)
SELECT DISTINCT INSTRUCTOR, SUM(CASE WHEN Grade = 'A' THEN 1 ELSE 0 END) OVER (PARTITION BY INSTRUCTOR) AS SUM
FROM Section
LEFT JOIN Grade_report ON Section.SECTION_ID = Grade_report.SECTION_ID
WHERE INSTRUCTOR IS NOT NULL
请注意,我不知道您的成绩如何表示,因此“A”的值当然可能不同。
它正在做的是选择所有教师及其成绩。当等级为'A'时,它将分配1,否则为0,然后它将它们“按”分区“(基本上是分组)教师
使用SQL Server中的OVER(PARTITION BY)可以解决很多问题,所以即使我的语法不正确,也可以尝试查看窗口函数,看看它们是否无法帮助你。