总结 group by 的用法

今天用实例总结一下group by的用法。

归纳一下:group by:ALL ,Cube,RollUP,Compute,Compute by

创建数据脚本

Create Table SalesInfo
(Ctiy nvarchar(50),
OrderDate datetime,
OrderID int
)

insert into  SalesInfo
select N‘北京‘,‘2014-06-09‘,1001
union all
select N‘北京‘,‘2014-08-09‘,1002
union all
select N‘北京‘,‘2013-10-09‘,1009
union all
select N‘大连‘,‘2013-08-09‘,4001
union all
select N‘大连‘,‘2013-10-09‘,4002
union all
select N‘大连‘,‘2013-05-12‘,4003
union all
select N‘大连‘,‘2014-11-11‘,4004
union all
select N‘大连‘,‘2014-12-11‘,4005

首先执行以下脚本:

select Ctiy,count(OrderID) as OrderCount
from
SalesInfo
group by Ctiy
with cube

可以看到多出了一行 是对所有的订单数的汇总

下一个脚本:

select Ctiy,Year(OrderDate) as OrderYear,count(OrderID) as OrderCount
from
SalesInfo
group by Ctiy,Year(OrderDate)
with cube

可以看出来对分组中的维度都进行了汇总,并且还有一个订单的总和

下一个脚本(注意出现了rollup):

select Ctiy,Year(OrderDate) as OrderYear,count(OrderID) as OrderCount
from
SalesInfo
group by Ctiy,Year(OrderDate)
with rollup

使用rollup会对group by列出的第一个分组字段进行汇总运算

下一个脚本:

select Ctiy,count(OrderID) as OrderCount
from
SalesInfo
where
Ctiy = N‘大连‘
group by all Ctiy

我们会看到 使用group by all 后,不符合条件的城市也会出现,只是订单数是零

需要注意的是 All 不能和 cube 和 rollup一起使用,和having一起使用的话,All的功能会失效.

下一个脚本:

select Ctiy,orderdate,orderid
from
SalesInfo
compute count(orderid)

显示了两个结果集,一个是订单结果集,一个是订单总数结果集

最后一个脚本:

select Ctiy,orderdate,orderid
from
SalesInfo
order by Ctiy
compute count(orderid) by Ctiy

按照不同的城市,分别显示该城市的订单信息,一个显示该城市的所有订单数量

就先说这些了.

时间: 2024-11-08 00:18:06

总结 group by 的用法的相关文章

SQL中group by的用法

group by即按照给定字段对结果集进行分组,从字面意义上理解就是根据"by"指定的规则对数据进行分组,所谓的分组就是将一个"数据集"划分成若干个"小区域",然后针对若干个"小区域"进行数据处理. group by的写法: 1.select 字段列表/* from 表名 group by 字段列表 2.select 字段列表/* from 表名 group by 字段列表 having 过滤条件 group by的特点: 常

mysql中count,GROUP BY的用法(转载)

计算你拥有动物的总数目与“在pet表中有多少行?”是同样的问题,因为每个宠物有一个记录.COUNT(*)函数计算行数,所以计算动物数目的查询应为: mysql> SELECT COUNT(*) FROM pet;+----------+| COUNT(*) |+----------+|        9 |+----------+在前面,你检索了拥有宠物的人的名字.如果你想要知道每个主人有多少宠物,你可以使用COUNT( )函数: mysql> SELECT owner, COUNT(*) F

mysql group by的用法 注意

group by 用法: 官方的解释:select 后面的字段必须出现在 group by 后面, 除非是聚合,sum,或者count 但是如果 是多表联查, SELECT    c.`name` AS NAME,    sum(b.uv) ASVALUE FROM    meta.dic_project_category a,    rpt_program_cat_people b,    meta.dic_app_category cWHERE    a.id = b.`name`AND a

mysql group by 的用法解析

1. group by的常规用法 group by的常规用法是配合聚合函数,利用分组信息进行统计,常见的是配合max等聚合函数筛选数据后分析,以及配合having进行筛选后过滤. 聚合函数max select max(user_id),grade from user_info group by grade ; 这条sql的含义很明确,将数据按照grade字段分组,查询每组最大的user_id以及当前组内容.注意,这里分组条件是grade,查询的非聚合条件也是grade.这里不产生冲突. havi

sql之group by的用法

1.概述 “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理. 2.原始表 3.简单Group By 示例1 select 类别, sum(数量) as 数量之和 from A group by 类别 返回结果如下表,实际上就是分类汇总. 4.Group By 和 Order By 示例2 select 类别, sum(数量) AS 数量之和 from A group by 类别

GROUP BY的用法

SELECT SUM(population) FROM bbc 这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有国家的总人口数. 显示每个地区的总人口数和总面积: SELECT region, SUM(population), SUM(area)FROM bbcGROUP BY region 先以region把返回记录分成多个组,这就是GROUP BY的字面含义.分完组后,然后用聚合函数对每组中的不同字段(一或多条记录)作运算 显示每个地区的总人口

sql中having与group by的用法

-------------自己测试--------------- select sname,sum(smon) from student group by sname having sum(smon)>7 ---------------自己测试----------------- 下面是正文 当同时含有where子句.group by 子句 .having子句及聚集函数时,执行顺序如下: 执行where子句查找符合条件的数据: 使用group by 子句对数据进行分组: 对group by 子句形

count group by 组合用法

1 需求是 求订单表1个月内 订单累计费用超过500的有多少人 根据题意 最先写出的sql是这样的 SELECT SUM(totalfee)AS n FROM sendorder WHERE `addtime` > UNIX_TIMESTAMP('2015-12-01') AND `addtime` < UNIX_TIMESTAMP('2016-01-01') AND state IN(1,2,3,8) GROUP BY uid HAVING n > 500 但是这样算出来的只是一个数组

group by 的用法

1  group by 是分组查询,一般group by是和聚合函数配合使用 group by 有一个原则,就是select 后面的列中,没有使用聚合函数(avg()  sum(),count() max(),min()---)的列,必须出现在group by 后面. select  ename,count(empno),deptno from emp group by deptno,ename; 正确写法. select ename,count(empno),deptno from emp g