假设我有一张表,上面有学生的姓名和成绩。我想创建一个查询,告诉我,对于每个学生,他的成绩中有多少百分比高于75.不同的学生可能会进行不同数量的测试。
例如:
会返回
答案 0 :(得分:0)
这听起来像是家庭作业,你需要自己解决。也许你需要首先看看如何将这个问题分解为几个步骤。例如:
最后一步是加入的地方
答案 1 :(得分:0)
试试这个。
Select studentName
,Round(Count(grade) /sum(case when grade>75 then 1 else 0 End),2) as persentage
from studentsTable
group by studentName
答案 2 :(得分:0)
假设您的架构是:
user_grades
username: varchar(255)
grade: int
然后我会做这个查询
SELECT
user_grades.username,
round(grades_above.total / user_grades.total,2) percent_above
FROM (
SELECT username, count(*) total FROM user_grades GROUP BY 1
) user_grades
INNER JOIN (SELECT username, count(*) total FROM user_grades WHERE grade > 75
GROUP BY 1) grades_above ON user_grades.username = grades_above.username
可能有多种方法可以做到这一点,但是用两个select语句和一个内连接完成了。我认为示例结果是错误的,但这是我期望看到的。
username percent_above
Bob 1.00
Joe 0.67
Sam 0.50
但是,请确保您了解正在发生的事情,如果您有任何疑问,请与我们联系。你理解如何得到答案比答案本身更重要。
答案 3 :(得分:0)
试一试
SELECT name,
COUNT(*) AS over_75
FROM student
WHERE grade > 75
GROUP BY name;