SQL中groupby的⽤法总结
⼀、简介SQL语⾔
SQL语⾔,是结构化查询语⾔的简称。SQL语⾔是⼀种数据库查询和程序设计语⾔,⽤于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本⽂件的扩展名。
SQL语⾔,是⾼级的⾮过程化编程语⾔,允许⽤户在⾼层数据结构上⼯作。它不要求⽤户指定对数据的存放⽅式,也不需要⽤户了解具体的数据存放⽅式,所以具有完全不同底层结构的不同数据库系统可以使⽤相同的结构化查询语⾔作为数据输⼊与管理的接⼝。SQL语⾔语句可以嵌套,这使她具有极⼤的灵活性和强⼤的功能。
⼆、聚合函数
函数作⽤
sum(列名)求和
max(列名)最⼤值
min(列名)最⼩值
avg(列名)平均值
first(列名)第⼀条记录(仅access⽀持)
last(列名)最后⼀条记录(仅access⽀持)
count(列名)统计记录数(注意和count(*)的区别)
注意:使⽤聚合函数时,select⼦句中只能存在三种元素:常数、聚合函数、聚合键。(聚合键:eg.在group by⼦句中指定的列)
(1)access:是微软发布的关系数据库管理系统。可以进⾏数据分析(拥有强⼤的数据处理、统计分析能⼒,可以进⾏各类汇总、平均等统计)和开发软件(成本低且易学,可以开发⽣产管理、销售管理、库存管理等各类企业管理软件)。
(2)count(* )
count()函数返回匹配指定条件的⾏数,忽略null;count(* )就返*回查询结果所有的⾏数,不忽略null和0。当count()⾥⾯跟某个字段,特指某个字段的⾏数。
三、group by
【通过(by)⼀定的⽅式分组(group)】
1、group by的作⽤
根据⼀定的规则将⼀个数据集划分成若⼲个⼩区域,然后针对每个区域进⾏数据处理。即分组查询,⼀般是和聚合函数配合使⽤。
group by有⼀个原则:就是select 后⾯的所有列中,没有使⽤聚合函数的列,必须出现在group by 后⾯。
2、group by的⽤法:
group by是先排序后分组
(1)简单应⽤:select——from——where——group by——;
执⾏顺序:from——where——group by——select——
(2)多表连接:select , from left join _ on_group by;
注意:
(1)在group by⼦句中不能使⽤select⼦句中定义的列的别名。由于group by⼦句的执⾏优先级⾼于select,因此如果在select中定义的列的别名,group by⼦句并不知道。
(2)group by⼦句的结果是随机的。
四、having和where的区别
1、where⼦句
作⽤是这对查询结果进⾏分组前,将不符合where条件的⾏去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使⽤where 条件过滤出特定的⾏。
2、having⼦句
作⽤是筛选满⾜条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使⽤having条件过滤出特定的组,也可以使⽤多个分组标准进⾏分组。
例⼦1:
select 类别,sum(数量) as 数量只和 from A
group by 类别 having sum(数量)>18
例⼦2:
select 类别,sum(数量)from A
where 数量 gt;8
group by 类别 having sum(数量)gt;10
五、Compute 和 Compute by
1、compute⼦句
其能够观察“查询结果”的数据细节或统计各列数据,返回结果由select列表和compute统计结果组成。
例⼦3:
select * from A
where 数量>8
compute max(数量),min(数量),avg(数量)
2、compute by
例⼦4:
select * from A
where 数量>8
order by 类别
groupby分组compute max(数量),min(数量),avg(数量) by 类别

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。