使用原始数据返回SQL中的子设备数据

时间:2016-05-12 08:12:18

标签: sql

我有一个学校的学生和老师的数据库,并在一个表中的主题中得分。

Teacher | Student | Score

Judy    | Jack    | 45
Judy    | Jane    | 48
John    | Jerry   | 37

我需要一个SQL查询来返回得分>的学生比例40,按老师分组。

在不使用临时表的情况下,我无法想到任何有效的方法。

有什么建议吗?

2 个答案:

答案 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