我有一个学校的学生和老师的数据库,并在一个表中的主题中得分。
Teacher | Student | Score
Judy | Jack | 45
Judy | Jane | 48
John | Jerry | 37
我需要一个SQL查询来返回得分>的学生比例40,按老师分组。
在不使用临时表的情况下,我无法想到任何有效的方法。
有什么建议吗?
答案 0 :(得分:1)
SELECT Teacher, SUM(CASE WHEN Score > 40 THEN 1 ELSE 0 END) / COUNT(*)
FROM marks
GROUP BY Teacher
答案 1 :(得分:0)
可以在CASE
中使用sum
:
CREATE TABLE #TEST (Teacher varchar(32), Student varchar(32), score int)
INSERT INTO #TEST (Teacher,Student,score)
VALUES
('Adam','Berta',32),
('Adam','Cecil',41),
('Adam','David',52),
('Erik','Fredrick',43),
('Erik','Georgia',66)
SELECT Teacher,
SUM(CASE WHEN Score > 40 THEN 1 ELSE 0 END) AS Success,
COUNT(Student) AS Total,
100*SUM(CASE WHEN Score > 40 THEN 1 ELSE 0 END)/COUNT(Student) AS Fraction
FROM #TEST
GROUP BY Teacher
DROP TABLE #TEST
我从中得到的结果是:
Teacher Success Total Fraction
Adam 2 3 66
Erik 2 2 100