1
SELECT ( Sum(r.marks_attained) / Sum(r.total_marks) * 100 )AS marks,
       s.name
FROM   result r,
       student s
WHERE  r.student_id = s.student_id
GROUP  BY r.student_id
AND 
ORDER  BY marks DESC  

我如何才能只获得百分比大于 90 的学生分数?

我可以在 where 子句中使用标记吗?

4

2 回答 2

2

尝试这个:

select (sum(r.marks_attained)/sum(r.total_marks)*100)as marks,s.name
from result r ,student s
where r.student_id=s.student_id 
group by r.student_id 
having (sum(r.marks_attained)/sum(r.total_marks)*100) >= 90
order by marks desc

我通过您的查询删除了 where 和 group by 之间的 AND,所以我添加了一个 having 子句

PS:>= 90(如果要包括 90,则 > 90 否则)

于 2013-07-23T08:47:51.607 回答
0

不,您不能在 where 子句中使用标记。因为它是一个聚合函数。它只能用在有子句中。

SELECT (sum(r.marks_attained)/sum(r.total_marks)*100) as marks,
    s.name from result r, student s
WHERE
    r.student_id=s.student_id
GROUP BY r.student_id
HAVING
    (sum(r.marks_attained)/sum(r.total_marks)*100) > 90
ORDER BY marks DESC

或者

SELECT (sum(r.marks_attained)/sum(r.total_marks)*100) as marks,
   s.name from result r,
   student s
WHERE
   r.student_id=s.student_id 
GROUP BY r.student_id
HAVING marks > 90
ORDER BY marks DESC
于 2013-07-23T08:49:37.833 回答