Order By 和 Group up的用法和区别

一、Order By用法

(1)作用:依照查询结果的某一列属性,进行相应的排序。

(2)排序方式的探索:

          1)排序方式:

                  ①ASC:升序排列。

                  ②DESC:降序排列。

           注意:可以将null视为无穷大,所以在升序的情况下,null放在最后面;在降序的情况下,null放在最前面。

          2)单列属性排序

           ①将blog按照bid进行升序排序。

select * 
from blog 
order by bid asc

          3)多列属性排序(先按前面的列属性进行排序,当出现一样的属性,就按照后面的属性进行相应的排序)

             注意:也就是前面的排序优先级高,后续排序只能在前面的排序结果上进行相等的属性的再次排序(后续排序只改变局部)。

扫描二维码关注公众号,回复: 2299093 查看本文章

         ①例:将blog表中的按bid进行降序排序的基础上按照bname的升序排序。

select * 
from blog 
order by bid desc,bname asc

二、Group by的用法

(1)查询条件:按照查询结果集中的某一列(或多列),进行分组,值相等的为一组。

(2)聚合函数的作用对象

          1)聚合函数(部分):count(表记录行数)、sum(总数)、avg(平均值)、max(最大值)、min(最小值)

                 例:对按bid后分组的表进行count(计数)

select bid,count(bid)
from blog
group by bid

(2)分组方法:按照指定一列或者多列值进行分组,值相同的一组。

       1)使用Group By子句之后,SELECT的结果的列名中只能出现分组属性

           ①例:SELECT的结果的列名只有bid、count(bname)这两列

 select bid,count(bname) 
 from blog 
 group by bid

(3)多个列属性进行分组

       1) 通过bid和grade进行分组

  select bid,grade,count(bid)
  from blog
  group by bid,grade
  

(4)使用having短语筛选最终输出结果

      1)having和where的区别,作用对象不同。

        ①where语句作用于基表或视图,从中选择满足条件的元组。

        ②having短语作用于元组,从中选择满足条件的组。

        例:查找blog表中博客序号(查看次数)大于100的分组,分组中博客的数量大于3。

select number,count(bname)
from blog
where bid>100
group by number
having count(bname)>3

   2)having详解:

         ①使用having语句的原因:where关键字无法与合计函数一起使用

         ②例:查找blog表中bid(博客序号)大于100的根据btype进行分组,找出分类的博客的浏览次数大于300的分组。

select btype,count(number)
from blog
where bid>100
group by btype
having sum(number)>300

猜你喜欢

转载自blog.csdn.net/tree_ifconfig/article/details/81124207