数据库的group 和group by 的用法?
Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。
它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。注意:group by 是先排序后分组。
举例子说明:如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人,就要用到分组的技术
selectDepartmentIDas“部门名称”。
COUNT(*) as“个数” from BasicDepartment group by DepartmentID
这个就是使用了group by +字段进行了分组,其中我们就可以理解为我们按照了部门的名称ID
DepartmentID将数据集进行了分组;然后再进行各个组的统计数据分别有多少;
如果不用count(*)而用类似下面的语法
selectDepartmentID,DepartmentNamefromBasicDepartmentgroupbyDepartmentID
将会出现错误
消息8120,级别16,状态1,第1行
选择列表中的列“BasicDepartment。DepartmentName”无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
扩展资料
结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式。
所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
2013-07-30
首先我们从字面上的意思理解,group是 <组,聚合> 的意思,by是 <通过,由> 的意思,
group by就是 通过你所指定的列 进行分组,聚合, 比方说一个学校,由1 2 3三个班级,
每个班由不同的成员,但是他们的共同特性就是每个班里的每个人都属于1 2 3这其中的一个班级,
假设你要查某个班里所有成员的某个成绩总和,或平均分,你用select 分数,班级号 from 班级表 where 班级号,所得出来的只能是每个人的分数,不能返回一个你想要的值;
这个时候我们就需要用到group by了,首先我们先通过group by对你所要查询的资料集分组,
例如group by 班级号 这样你所查询的资料,就由原来所有的数据分组变成了3个,1 2 3;
然后假设你要得到某个班级里的某个成绩的总分,可以配合聚合函数使用,不知道你学到了聚合函数没有,
例如select sum(某科分数列),班级号 from 班级资料 where 你想知道的班级 group by 班级号,那么得出的就是你所需要的某个班某个科目的成绩总和
当然聚合函数不止sum(),还有avg()等等的
group by下还有很多子句,比如having,having你可以先理解成何where一样是查询的条件,但是它必须和group by同时使用,因为having是对group by分组后的数据进行筛选,可以和where联合起来使用,where group by having之间的关系是,先通过where筛选出数据,group by对得出的数据进行分组,having再对分组后的每一行进行筛选
举个例子,你要查及格人数超过10人的班级
select 班级号 from 表
where 成绩>=60
group by 班级号
having count(成绩) > 10
group by的一下注意事项,例如having必须和group by一起使用,还有你所查询的列必须是聚合函数或者你用于做分组条件的列等等
以上的回答仅仅是针对你所提出的问题做的回答,如果还有疑问可以继续补充问题,我会关注