
开篇啰嗦话
前文已经介绍了Select基本语法和如何对表进行概览,今天继续为你介绍新的内容。
从零学DAX/Sql/Python之SQL篇文章索引 | |
1 | SQL系列-01-数据库及SQL Server基本操作 |
2 | SQL系列-02-SQL Server基本介绍及SSMS |
3 | SQL系列-03-SQL与Python集成编辑工具ADS |
4 | SQL系列-04-Select语法、别名、概览数据 |
5 |
01.order by 排序
通常,我们需要对显示结果进行排序,排序语法是
order by 列名 desc 或 asc,如果不写desc(降序)\ase(升序)则,默认是ase.
当有多个需排序列时,需单独为每个列指明desc或asc参数,列之间用英文逗号,分隔。
---按指定列排序:order by 列名 DESC-降序或ASC-升序-这是默认的
--当有多个需排序列时,需单独为每个列指明desc或asc参数
---按年度升序排列
select a.订单号,a.公司名称,a.供应商名称,a.日期,a.金额 from [samples].[dbo].[采购明细] as a
order by a.日期
--按照金额降序排列
select a.订单号,a.公司名称,a.供应商名称,a.日期,a.金额 from [samples].[dbo].[采购明细] as a
order by a.金额 desc
--按照年度升序和金额降序排列
select a.订单号,a.公司名称,a.供应商名称,a.日期,a.金额 from [samples].[dbo].[采购明细] as a
order by a.年度 ,a.金额 desc
02.distinct-去重或取唯一值我们经常需要了解某些特定列包含某些信息,例如合同的招标方式有哪些、订单类型有哪些,等等。其语法是:distinct 列名---查看唯一值,也叫去重
select distinct cgmx.招标方式 from [samples].[dbo].[采购明细] cgmx
select distinct cgmx.供应商性质 from [samples].[dbo].[采购明细] cgmx
下图是执行结果03.group by 分类汇总
分类汇总基本语法是Select 列名1,列名2,..,聚合函数 From 表名group by 列名1,列名2,….特别注意:group by后面的列名。必须出现在select后面
在实际过程中,我们经常需要进行各种分类汇总,例如,不同年度的采购额,不同客户的销售额,不同产品的均价、最高价、最低价,不同年度、不同客户的合同份数、合同金额等等,这涉及到两个问题:一是分组,这需要用”group by 列名”;二是聚合运算,如求和sum,计数 count,不重复计数count(distinct列名),最小值min,最大值max,平均值avg。--分类汇总及聚合函数的应用
--特别注意:group by后面的列名。必须出现在select后面
--1.仅按年度,统计不同年度的采购数量和采集金额
select cgmx.年度,sum(cgmx.数量) as 数量,sum(cgmx.金额) as 金额
from [samples].[dbo].[采购明细] cgmx
group by cgmx.年度
--2.仅按年度,统计不同年度的采购数量、采集金额、均价、最高阶和最低价
select cgmx.年度,count(cgmx.订单号) as 订单数,
min(cgmx.不含税单价) as 最低价,AVG(cgmx.不含税单价) as 均价,max(cgmx.不含税单价) as 最高价,
sum(cgmx.数量) as 采购数量,sum(cgmx.金额) as 采购金额
from [samples].[dbo].[采购明细] cgmx
group by cgmx.年度
--3.仅按年度和公司名称两个维度,统计不同年度、不同公司的采购数量、采集金额、均价、最高阶和最低价
select cgmx.年度,cgmx.公司名称,count(cgmx.订单号) as 订单数,
min(cgmx.不含税单价) as 最低价,AVG(cgmx.不含税单价) as 均价,max(cgmx.不含税单价) as 最高价,
sum(cgmx.数量) as 采购数量,sum(cgmx.金额) as 采购金额
from [samples].[dbo].[采购明细] cgmx
group by cgmx.年度,cgmx.公司名称
其效果如下图所示
04.group by with rollup/cube
当分组列超过2个时,有时不仅要进行分类汇总,还需要进行小类汇总和合计汇总,这可以用with rollup 或with cube两个参数。这两个参数的意思,你只有自己跑一遍,才可以深刻体会。下面直接给出语句和效果图--4.仅按年度和公司名称两个维度,利用rollup进行,统计不同年度、全部年度的聚合值
---先汇总公司汇总,在按不同年度再汇总,再汇总全部
select cgmx.年度,cgmx.公司名称,count(cgmx.订单号) as 订单数
,sum(cgmx.金额) as 采购金额 from [samples].[dbo].[采购明细] cgmx
group by cgmx.年度,cgmx.公司名称 with rollup
Group by with cube
select cgmx.年度,cgmx.公司名称,count(cgmx.订单号) as 订单数,
sum(cgmx.金额) as 采购金额 from [samples].[dbo].[采购明细] cgmx
group by cgmx.年度,cgmx.公司名称 with cube
随着轻轻的风轻轻地飘
历经的路都会刻骨铭心
如果你觉得有用,记得点击右下角“在看”按钮,并写下宝贵的意见,也可在公众号下扫码加群。
欲见详情,静候下文

原创文章欢迎转载!
请注明:本文首发于
"数字化审计"公众号