SQL基础整理(三)关于聚合函数,分组,排序

一.关于聚合函数

 

  • 首先常用的聚合函数有count,sum,avg,max,min 这些函数的功能不再赘述,只是有一些需要注意的地方
  • 注意事项:除了count(*)是对所有行进行统计之外,其余的聚合函数再以列名做参数时,会把该列为NULL的排除在外,不会参与到计算当中
  • 注意事项:使用聚合函数删除重复值时,distinct关键字需要写在聚合函的参数内,列名之前

二.关于GROUP BY子句--切分表的一把刀

 

  • 首先根据单词的意思进行理解就是根据什么进行分组,更形象一些的理解就是对表进行切分
  • 这里需记住几个注意事项:1.只能写在select之中(意思是,只有在select语句中才会出现group by)    2.不能使用select子句中列的别名  3.聚合结果无效  4.where子句中不能使用聚合函数
  • group by(列名), 当语句中出现group by时,select需要注意的问题有,此时select语句能输出的内容是列名,或者聚合函数,因为group by理解为是对表进行分类统计,比如对十个人按照身高分类,那么对于身高180的人来说,你偏要输出他们的体重,那么这些人的体重是不一样的,是无法输出的,所以只能输出他们的身高,以及对这些人的其他属性进行聚合
  • 聚合键含NULL的情况,把NULL单独当做一个类型
  • 使用where子句时的执行顺序:from-->where-->group by-->select 也就是DBMS会先通过where子句对行进行过滤再根据group by子句进行分组

常见错误:1.在select中输出了聚合键外的列  2.在group by中使用了别名  3.在where中使用了聚合函数------只有select和having和order by子句中可以使用聚合函数

三.为聚合结果指定条件--想得到特定分组怎么办??

 

  • 这时候我们需要在group by 子句后使用having子句
  • 关于having子句的语法类似于where子句,这里有一些需要注意的地方就是having子句更多的对分组进行过滤,他能够给使用两种要素:聚合函数和group by中指定的列名(聚合键)
  • 比如说,在group by(money),根据钱对数据进行分类,那么你需要选择出钱大于500的分组,那么having应该写成  having money >500

四.对查询结果进行排序--order by

 

  • 如果表中有一列叫做学号,我们想让查询结果按照学号由小到大进行排序,需要写成order by number asc,如果想按照从大到下的顺序进行排序写做 order by number desc,其中asc表示升序,desc表示降序,但是如果不写的话是默认升序的
  • 对多个列进行排序,直接在order by 子句中书写多个列名即可比如,先按照学号进行排序,学号相同时按照分数进行排序    写做 order by number,grade
  • NULL的顺序:order by的列中若值为空,则不参加排序,将该行放在结果的首部或者尾部进行显示,具体是在首部还是在尾部根据DBMS的不同而不同
  • 可以在order by中使用别名原因是,from-->where-->group by-->having-->select-->order by,select的执行顺序在order by 之前,也就是说,当你在order by中使用别名时已经知道了别名的存在,但是在group by中使用别名时还不知道别名的存在,所以不能在order by 中可以使用别名,但是在group by中不能使用别名

 

 

 

 

      

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巴塞罗那的风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值