【问题标题】:query with less than and greater than statements in where clause在 where 子句中使用小于和大于语句进行查询
【发布时间】:2013-07-23 08:44:25
【问题描述】:
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 子句中使用标记吗?

【问题讨论】:

标签: php mysql


【解决方案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 
having (sum(r.marks_attained)/sum(r.total_marks)*100) >= 90
order by marks desc

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

P.S: >= 90(如果要包括 90,则 > 90 否则)

【讨论】:

    【解决方案2】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 2018-06-26
      • 1970-01-01
      相关资源
      最近更新 更多