类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
我对照着三本书,在网上又查,整不明白分组group by是什么意思?
不group by不也是分组的吗???
谁能讲明白这分就是谁的了,我找的脑袋疼了,不行了,等嗟来之食了
另外,我讨厌野书!!
请大家推荐一本SQL语法的好书吧要电子版的,所谓好书就是象我这种傻人一看就能明白的书,我不要天书不要野书
网友回答:
GROUP BY 关键字后面跟着列的列表,称为分组列。GROUP BY 子句限制结果集中的行;对于分组列中的每个非重复值只有一行。每个结果集行都包含与其分组列中特定值相关的汇总数据。
多看SQL SERVER联机帮助
--测试
create table tb1(客户名称 varchar(10),数量 int)
insert into tb1 select 001,90
union all select 002,50
union all select 002,40
union all select 00190
union all select 002,50
union all select 001,100
--计算每个组的数量和
select 客户名称,数量=sum(数量) from tb1 group by 客户名称
--结果:
001 280
002 140
--求出每个组中有重复的记录
select * from tb1 group by 客户名称,数量 having count(*)>1
--结果:
002 50
001 90
----------------
group by 字段名 --是以这个字段相同的值来分组
比如:
id num
1 2
1 3
2 3 --如果你以id分组,就只有两个组,1和2
--如果以num分组,那就是2和3
id, money
1, 1
2, 2
1, 3
select id , sum(money) from table group by id
--result
id ,money
1, 4
2, 2
简单的说group by根据指定列将结果分组后合并,合并内容由聚合函数决定,上例中是sum函数
物以类聚,人以群分.分组group by 就是把相同的字段值放在一组里边进行统计.
如果用到group by的话
select 后面的东西要么出现在group by后面,要么是聚合函数。
常用聚合函数:
SUM([ALL | DISTINCT] expression) 数字表达式中所有值的和
AVG([ALL | DISTINCT] expression) 数字表达式中所有值的平均值
COUNT([ALL | DISTINCT] expression) 表达式中值的个数
COUNT(*) 选定的行数
MAX(expression) 表达式中的最高值
MIN(expression) 表达式中的最低值
--求出每个组中有重复的记录
select * from tb1 group by 客户名称,数量 having count(*)>1
--结果:
002 50
001 90
这就是多分组
group by a ,b
a b c
1 2 5
1 3 7
1 2 10
select a,b,max(c) from 表 group by a,b
得到:
1 2 10
1 3 7
--就是先以a分组,再以b分组。