我有一個學校的學生和教師的數據庫,並在一個表中的主題中得分。用原始數據返回SQL中的子數據
Teacher | Student | Score
Judy | Jack | 45
Judy | Jane | 48
John | Jerry | 37
我需要一個SQL查詢,返回按照老師分組得分> 40的學生比例。
我不能想到這樣做的有效方法,而不使用臨時表。
有什麼建議嗎?
我有一個學校的學生和教師的數據庫,並在一個表中的主題中得分。用原始數據返回SQL中的子數據
Teacher | Student | Score
Judy | Jack | 45
Judy | Jane | 48
John | Jerry | 37
我需要一個SQL查詢,返回按照老師分組得分> 40的學生比例。
我不能想到這樣做的有效方法,而不使用臨時表。
有什麼建議嗎?
SELECT Teacher, SUM(CASE WHEN Score > 40 THEN 1 ELSE 0 END)/COUNT(*)
FROM marks
GROUP BY Teacher
小錯誤:要麼COUNT(CASE當Score> 40 THEN 1 ELSE null END)'或'SUM(CASE WHERE Score> 40 THEN 1 ELSE 0 END)'。 –
@ThorstenKettner對我犯了這個錯誤感到羞恥。我嘗試downvoting自己,但它不會讓我:-) –
它可與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
那麼什麼是預期的結果(?,與該表數據) – jarlh