zoukankan      html  css  js  c++  java
  • orderby group by

     

    说到SQL语句,大家最開始想到的就是他的查询语句:

    select* from tableName;

    这是最简单的一种查询方式,不带有不论什么的条件。

    当然在我们的实际应用中,这条语句也是非经常常使用到的,当然也是最简单的。在考虑到性能的时候,我们一般不这么

    写!详细怎么写,请关注兴许的文章。。。

    以下我们着重的看下文章标题所提到的几个子句。

    一、Where


    例如以下一句:

    select * from  dbo.CommodityElectric where Code='e4'

    就是寻找表CommodityElectric中, Code='e4'的记录。

    这里的where对查询的结果进行了筛选。仅仅有满足where子句中条件的记录才会被查询出来。

     

    二、Group By

     

    GROUP BY 是分组查询一般 GROUP BY 是和聚合函数配合使 

    group by 有一个原则,就是 select 后面的全部列中,没有使用聚合函数的列,必须出如今 group by 后面(重要)

     

    先看表

     


     

    表内容

     


     

     

    假如如今让你找出CommodityName的平均价格,你怎么办?

    我们能够这么做:


    select avg(CommodityName) from tablename where CommodityName="联想";

    Group By通常是和一些聚合函数一起使用,比方上面我们用到的求平均的函数avg,还有求和sum,求个数count

    求最大max,求最小minmax对于上表,


    求每种商品的最大的价格:

    selectCommodityName,CommodityPrice,CommodityType,max(CommodityType) from tablename group by CommodityName


    GroupBy另一个重要的合作对象,他就是having

     

    .having


    我们用Group By进行分组后,怎样对分组后的结果进行一个筛选呢?having来帮您解决这个难题。

    通常,你须要通过在HAVING子句中反复聚合函数表达式来引用聚合值,就如你在


    SELECT语句中做的那样。例


    SELECT A COUNT(B) FROM TABLE GROUP BY A HAVING COUNT(B)>2


    1.首先看一个样例:求平均价格在3000以上的商品

    假设我们使用这个:

     

    select   CommodityName , avg(CommodityPrice) from  dbo.Commodity where avg(CommodityPrice)>3000  group by CommodityName 

    这样是否能达到我们的要求呢?

     

    答案是否定的,由于where子句不能使用聚合函数。为了解决问题,我们来用下我们的杀手锏,他就是Having


    改写例如以下:

    select   CommodityName    ,  avg(CommodityPrice)   from  dbo.Commodity   group by CommodityName    having avg(CommodityPrice)>3000;


    2.我们继续看Having的另外一个匪夷所思


    运算符in也能够用在having子句。




    selectfruitname,avg(price) from tablename group by fruitname having fruitname in("orange","apple");


    四、Order By

    OrderBy是对查询的结果进行一个再排序的过程,一般放在查询语句的最后,能够是单列,也能够实现多列的排序。

    分为升序asc和降序desc,默认的为升序。

    OrderBy单列的排序比較简单,多列的也不麻烦。

    select * fromtablename  group by friutname order by fruitname asc,price desc.


    小结:

    之所以写这个简短的博客,是在项目中常常要用到这两个的语句,并且刚開始自己理解也是马马虎虎的,不是非常求全。现在在项目中应该彻底的了解了。所以加以全面的了解。Gorderby是通常与聚合的函数进行结合使用,后可跟having进行筛选。Order by是一个i额排序的过程,简单的降序与升序的排序。

     

  • 相关阅读:
    一个分页的存储过程
    自己动手:修改crx文件制作自己的Chrome Apps
    SQLSERVER 过滤所有权的代码
    在ASP.NET中实现多文件上传
    引用 TimeSpan简介
    xml
    常用的正则表达式小结
    ASP.NET事务处理
    创建可在网页下载安装的ActiveX控件(通过Setup.exe安装)
    ASP.NET验证控件应用实例与详解
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3771831.html
Copyright © 2011-2022 走看看