数据库中group by的问题,还有having

数据库中group by的问题,还有having,第1张

group by就是按照不同的字段进行分组,数值可以实现汇总

例如数据库中有A表,包括学生,学科,成绩三个字段

数据库结构为

学生 学科 成绩

张三 语文 80

张三 数学 100

李四 语文 70

李四 数学 80

李四 英语 80

那么

select 学生,sum(成绩) from A group by 学生;

得到如下结果

学生 成绩

张三 180

李四 230

==============================================================

如果考虑having

语句写成:

select 学生,sum(成绩) from A group by 学生 having 成绩=80;

得到结果就是这样的

学生 成绩

张三 80

李四 160

用having比 JOIN ON 相对好理解一些,简单一些。

group

by

“分组”查询,就是把记录集中的记录按一定规则进行“分组统计”。

假设一个学生名单表,有班级、姓名

,性别

3个字段,

如果想查询每个班有多少个学生:

(这是以“班级”分组统计人数)

select

班级

,count(姓名)

as

数量

from

学生名单表

group

by

班级;

如果出现每个班的男女生数量:(这是以“班级”及“性别”为分组统计人数)

select

班级

,性别,

count(姓名)

as

数量

from

学生名单表

group

by

班级,性别;

首先说明SQL句子里面,order by 必须在group by 后面。没有group by就不能用order by 第二。group by是对数据的分组,order by 是对分组后的数据进行排序、

在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。

在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数

select max(sal),job emp group by job;

(注意max(sal),job的job并非一定要出现,但有意义)

查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数。

select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;

当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句。having 与where 子句类似,均用于设置限定条件

where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。

having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

查询每个部门的每种职位的雇员数

select deptno,job,count() from emp group by deptno,job;

group

by是分组的,比如你要查询一个班级的学生,各省分别有多少人。(表结构是学生表,有学号,姓名,所在省,备注等。)

就应该用到group

by了,如:

SELECT

所在省,COUNT()

AS

学生数

FROM

学生

GROUP

BY

所在省

Order

by是用来排序的。如,你想要把上例中查得的结果按人数从大到小,或从小到大排列,可以加这么一句,

ORDER

BY

学生人数

(DESC或ASC);

好了,就这么个用法。

后面括号的关键字,指明了从大到小,还是从小到大,只能写一个,并且不要括号。

定义:sql

语句就是对数据库进行 *** 作的一种语言。

几个简单的基本的sql语句:

选择:select

from

table1

where

范围

插入:insert

into

table1(field1,field2)

values(value1,value2)

删除:delete

from

table1

where

范围

更新:update

table1

set

field1=value1

where

范围

查找:select

from

table1

where

field1

like

’%value1%’

(所有包含‘value1’这个模式的字符串)---like的语法很精妙,查资料!

排序:select

from

table1

order

by

field1,field2

[desc]

总数:select

count()

as

totalcount

from

table1

求和:select

sum(field1)

as

sumvalue

from

table1

平均:select

avg(field1)

as

avgvalue

from

table1

最大:select

max(field1)

as

maxvalue

from

table1

最小:select

min(field1)

as

minvalue

from

table1[separator]

以上就是关于数据库中group by的问题,还有having全部的内容,包括:数据库中group by的问题,还有having、数据库 group by的用法,详细点谢谢!、数据库为什么有时候必须写group by等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9797192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存