分享

【sql in excel】入门19:数据排序和分组

 L罗乐 2017-12-07

avg、sum、min等函数常常与group by子句配合使用,对数据进行分组统计。

数据源:

按部门对销售进行求和,平均值,计数,最大值、最小值等分组统计。

sql语句:

select 部门,sum(销售) as 总销售,avg(销售) as 平均销售,count(销售) as 销售笔数,min(销售) as 部门最小销售,max(销售) as 部门最大销售 from [Sheet1$] group by 部门

结果:


现在将要求拆分开来,要求提取每个部门的最大销售,并按降序排列。

sql语句:

select 部门,max(销售) as 部门最大销售 from [Sheet1$] group by 部门 order by max(销售) desc

结果:

如果使用下面的sql语句:

select 部门,max(销售) as 部门最大销售 from [Sheet1$] group by 部门 order by 部门最大销售 desc

将返回:

也就是不能够用使用字段别名来进行排序。

在sql中,如果不想写 order by max(销售) desc中的max(销售) ,可以用数字来表示select 后面的字段,如此题,将语句改为:

select 部门,max(销售) as 部门最大销售 from [Sheet1$] group by 部门 order by 2 desc

结果:

此处,2表示select后面第2个字段,第一个字段自然是 部门。

将sql语句改为:

select 部门,max(销售) as 部门最大销售 from [Sheet1$] group by 部门 order by 1,2 desc

结果:部门升序,部门最大销售降序排序。


Having子句:

Having子句用于与Group by子句配合使用,它总是在Group by子句后面,告诉Group by子句输出里包含那些分组。相当于where对select的作用。其语法顺序如下:

select

from

where

group by

having

order by


数据源:

要求:提取总销售大于等于1000的部门数据。

1、先执行下面语句:

select 部门,sum(销售) as 总销售 from [Sheet1$] group by 部门

结果:

2、按照思路,在上面结果按条件筛选总销售大于等于1000的数据即可。

于是就使用到了having:

select 部门,sum(销售) as 总销售 from [Sheet1$] group by 部门

having sum(销售) >=1000

结果:having sum(销售) >=1000就是条件

having子句是group by子句的条件(where)。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多