数据库group by用法是怎么样的

数据库group by用法是怎么样的,第1张

Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。

它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。注意:group by 是先排序后分组。

select student姓名,avg(sc成绩)

from student,sc

where student学号=sc学号 and 姓名

in

(

select student姓名 from student,sc

where student学号=sc学号 and sc成绩<60

group by student姓名

having count()>=2

)

group by student姓名

Group By All [expressions] :

Group By All + 分组字段, 这个和前面提到的Group By [Expressions]的形式多了一个关键字ALL。这个关键字只有在使用了where语句且where条件筛选掉了一些组的情况下才可以看出效果。在SQL Server 2000的联机帮助中,对于Group By All是这样进行描述的:

如果使用 ALL 关键字,那么查询结果将包括由 GROUP BY 子句产生的所有组,即使某些组没有符合搜索条件的行。没有 ALL 关键字,包含 GROUP BY 子句的 SELECT 语句将不显示没有符合条件的行的组。

百度百科-GROUP BY

GROUP BY 是分组查询, 一般 GROUP BY 是和 聚合函数配合使用,你可以想想

你用了GROUP BY 按  ITEMITEMNUM 这个字段分组,那其他字段内容不同,变成一对多又改如何显示呢,比如下面所示

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)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。

你的意思是根据字段

fproid分组,然后取得分组中fmodifyid字段的最大值是吧。如果是这样,就不需要用到having。那么就可以写成

select afid,aflabname,afappname,afprotypename,tFPriceSum,afapptime,afmemo

from sy_syjs_proinfo a,

(select bfproid,sum(bfbuynumbfunitprice) as FPriceSum ,max(bfmodifyid) fmodifyid

from sy_syjs_proitem b

where bfstageid=0

group by bfproid

)) t --说明,分组之后, fmodifyid字段本来只会取其中一行。max就是取其中值最大的一行,不---需要再用having来加个条件。

where afcurrstate!=0 and afcollegename=collName and afid=tfproid;

如果硬要加having,那么就需要这样写。

select afid,aflabname,afappname,afprotypename,tFPriceSum,afapptime,afmemo

from sy_syjs_proinfo a,

(select bfproid,sum(bfbuynumbfunitprice) as FPriceSum

from sy_syjs_proitem b

where bfstageid=0

group by bfproid ,bfmodifyid

having bfmodifyid=max(bfmodifyid)) t

where afcurrstate!=0 and afcollegename=collName and afid=tfproid;

select a,sum(b),sum(c) from table group by a

格式这样 group by 的范围就是你没有用函数求职的部分 如果还有其他项例如

select a,d,sum(b),sum(c) from table group by a,d

这样以此类推

group

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

就应该用到group

by了,如:

SELECT

所在省,COUNT()

AS

学生数

FROM

学生

GROUP

BY

所在省

Order

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

ORDER

BY

学生人数

(DESC或ASC);

好了,就这么个用法。

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

以上就是关于数据库group by用法是怎么样的全部的内容,包括:数据库group by用法是怎么样的、SQL中Group By 用法、数据库group by having查询,提示不是group by表达式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存