SQL中Group By 用法
SELECT 列名1, aggregate_function(列名2)
FROM table_name
GROUP BY 列名
Group By 后面的列名,一定要与上面select后面的列名一致吗???一定要是列名1吗?
SELECT 列名1,aggregate_function(列名2)
FROM table_name
GROUP BY 列名
Having aggregate_function(列名)
Having后面的aggregate_function(列名)也必须和上面select后面的aggregate_function(列名)一致吗? 展开
GROUP BY 是分组查询, 一般 GROUP BY 是和 聚合函数配合使用,你可以想想
你用了GROUP BY 按 ITEM.ITEMNUM 这个字段分组,那其他字段内容不同,变成一对多又改如何显示呢,比如下面所示
A B
1 abc
1 bcd
1 asdfg
select A,B from table group by A
你说这样查出来是什么结果,
A B
abc
1 bcd
asdfg
右边3条如何变成一条,所以需要用到聚合函数,比如
select A,count(B) 数量 from table group by A
这样的结果就是
A 数量
1 3
group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面
SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
SQL语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。SQL语言语句可以嵌套,这使他具有极大的灵活性和强大的功能。
GroupBy语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。
所以你想分出结果的哪组都行啊,只要是你查询的
使用having短语是为了指定筛选条件,即从Group by所分出来的分组结果中进行筛选
则having后面可以加条件
如:
select sno
from sc
group by sno
having count(*)>3
FROM table_name
GROUP BY 列名1,列名2
自定义函数aggregate_function,加上dbo.
例如:
select date1,sum(dj),sum(je) from table
group by date1
像这样,对DATE1字段进行统计,统计一个DATE1里,SUM(JE),SUM(DJ)这二项。
select date1,name1,km1,sum(je) from table
group by DATE1,NAME1,KM1
像这样后面就要跟你查询的非合计(汇总,平均等等)的所有字段。