mysql中having怎么用?

文摘   2024-11-11 09:00   上海  

前言

    面试官:来吧,说一下mysql中 having怎么使用的?


                           




正文

    我们使用having 都是和group by 一起使用。

    举个例子:假设一个成绩表,字段有:class , score ,name ,sex

    我们查每一个班级的平均分是这样子查的

    select class, avg(score) from  table group by class 

    那现在有一个特殊的要求,要查出平均分大于80的班级

    select class, avg(score) from  table group by class having avg(score)>80

这里给大家插一条!!福利


----------------福利 -------------------------

大家知道,我今年刚好38岁!

也刚好创业 4 年,「就聊挣钱」星球运营 6 年了,星球用户刚好是 10812 位朋友。

我的生活、我的事业、我的感想,都会分享到这个社群中,很多很多小伙伴已经跟着续费了 6 年。 

可以说,这个星球见证了我的成长,从业余时间副业开始挣钱,到现在成为了一名真的创业者。 

整个过程、整个经历、整个思考,都沉淀在这个星球里了。

从2018年8月8日我写第一个帖子开始,到现在星球已经有 7200+ 的帖子,精华帖就有 637 条。


今年双十一,我的星球要冲击 11111 个用户,到现在为止刚好差 300 人,于是我决定今年双十一活动。

给大家发 300 张,历史最大的优惠券!299 的星球给大家发 200 元优惠券,仅需要 99 元即可加入(6年最低)!

到达 11111 用户会,星球立刻恢复原价 299 元!希望和老读者们,一起见证这个历史时刻!

----------------------分割线  继续-----------------------------


    面试官又问:那where 和 having 一起使用,是怎么使用的?

    以上面的例子继续距离,我们的需求是要 查询出每个班级的男生的平均分,且平均分大于80的班级有哪些?

     select class ,avg(score) from table where sex='male' group by class having  avg(score)>80


    面试官再问:没group by 能用having吗

    可以是可以,但是意义并不大

    select * from table where score>80 

    select * from table having score>80     

    这俩一样


    面试官还问:那你说说 where 和 having 区别是什么?

    where一般是用于对于表进行筛选

    having一般是用于 对于分组进行筛选

    那上面的例子 

select class, avg(score) from  table group by class having avg(score)>80

    这就是group by class, 用class做了分组 ,在拿avg(score)对分组内进行筛选




Java面试教程
Java面试题、Java教程、Java培训、Java学习、Java开发、Java基础、Java入门,关于Java的一切。
 最新文章