计算SQL中的百分比

时间:2014-07-08 19:32:02

标签: sql

我有一个名为ExamResult的表,其中包含以下列

studentId, Subject, Standard, Marks

并且我在表格中跟随了值

表示studentId = 1

1,maths,9,78
1,english,9,80
1,history,9,67
1,geography,9,90

表示studentId = 2

2,maths,9,68
2,english,9,83
2,history,9,70
2,geography,9,69

类似的条目,直到studentId 30

现在我想计算每个学生的百分比,并希望从表格中选择以下列的数据

studentName(from student table),Standard,Percentage(with highest percentage on top)

例如:

Amit,9,78%
Sam,9,77%

现在的问题是如何在SQL中计算这个百分比,

select stu.name,exam.standard,(what to do here) as Percentage 
from Student stu 
inner join ExamResult exam
on stu.Id=exam.studentId;

请帮帮我

3 个答案:

答案 0 :(得分:1)

尝试:

SELECT stu.name, exam.standard, AVG(stu.marks) as 'Percentage'
FROM Student stu 
INNER JOIN ExamResult exam
    ON stu.Id=exam.studentId;
GROUP BY stu.name, exam.standard

注意:这偏向于Microsoft SQL Server的SQL风格。您没有指定您使用的是哪个版本。希望你能从这里开始工作。

答案 1 :(得分:1)

您是否使用过分组条款?

select stu.name,exam.standard, **average(marks) as Percentage** 
from Student stu 
inner join ExamResult exam
on stu.Id=exam.studentId
**group by stendent_id
order by Percentage  desc**

答案 2 :(得分:1)

尝试使用AVERAGE功能平均得分:

select stu.name,exam.standard,AVERAGE(marks) + '%'  as Percentage 
from Student stu 
inner join ExamResult exam
on stu.Id=exam.studentId
group by stu.name, exam.standard;

分组将每个学生/考试对视为一个单独的行,这样您的结果将为每个学生/考试组合一行,并将平均每个考试的分数作为该学生考试组合的一部分。