当前位置:首页 » 编程语言 » sql怎么查group
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql怎么查group

发布时间: 2022-05-08 15:59:27

sql关于group by查询问题

select replace(姓名,'张三1','张三'), sum(吃了几碗饭) from 表名 group by replace(姓名,'张三1','张三')

❷ 查询sql,查出GROUP BY 之后的记录条数,及符合某个条件的记录条数,显示到一条记录中

SELECT * FROM temp.CUST_NO ,temp.c,temp1.c1,temp2.c2
(SELECT CUST_NO,COUNT(*) c FROM CUST_DRAFTNO WHERE DRAFT_TYPE IN ('3','4','5')AND STATUS IN ('4','5') GROUP BY CUST_NO) temp
LEFT JOIN (SELECT CUST_NO,COUNT(*)c1 FROM CUST_DRAFTNO WHERE DRAFT_TYPE IN ('3','4','5')AND STATUS IN ('4','5') AND STATUS='4' GROUP BY CUST_NO) temp1 ON temp.CUST_NO=temp1.CUST_NO
LEFT JOIN (SELECT CUST_NO,COUNT(*) c2 FROM CUST_DRAFTNO WHERE DRAFT_TYPE IN ('3','4','5')AND STATUS IN ('4','5') AND STATUS='5' GROUP BY CUST_NO) temp2 ON temp.CUST_NO=temp2.CUST_NO 查出根据CUST_NO分组
的sql组成表
在使用LEFT
JOIN 查出根据CUST_NO分组并且条件STATUS=4的sql组成表
继续使用LEFT
JOIN 查出根据CUST_NO分组并且条件STATUS=5的sql组成表
组合查出的数据就是你要的

❸ sql里group的用法

在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;

❹ sql 查询 group

我回复过你了 ...

❺ sql查询中如何用group by查询出完整的一行记录

selct * from table where uploadtime=max(uploadtime) group by school
这条语句能把uploadtime最大的那一条数据查出来
select * 就是查出所有的数据,你再用where=* 过滤指定一下你要查数据的条件。

关于你的语句{
select id,name,nickname,email,school,max(uploadtime) from table group by school }

这段代码只是随意查了个id,name等信息,但是不是max(uploadtime)对应的,你改成
{select id,name,nickname,email,school,uploadtime where uploadtime=max(uploadtime) from table group by school }

不知道你问的是不是这个意思

❻ SQL中查询多个字段时,GROUP BY 要怎么使用

group
by是要用在sum(),max(),min()等聚合函数的后面
不能单独使用,如果要排序的话
根据order
by
排序就行了,这个排序在一定意义上也可以理解为分组

❼ SQL多表查询 group by

只能看到你的语句 没办法看到你的数据,一般group by 都跟聚合函数一起使用,比如你查出来的ID相同的有多个,你要让这个ID变成一条的话,可以把不同的字段求和处理,或者其他处理,让这些相同ID的数据变成1条,又或者你查询出来会有多条完全相同的数据 你只要保留一条,可以使用distinct去重,看你实际的需求是啥样的和你数据是啥样的,反正我是没敢猜你这个具体要怎么用

❽ SQL中的Group By的查询过程多列分组的查询过程是怎样的

Group By子句
Group By子句可以将表的行划分为不同的组。分别总结每个组,这样就可以控制想要看见的详细信息的级别。

语法:

[ Group By [ ALL ] Group_By_expression[ ,...n ]

[ WITH { CUBE | ROLLUP } ] ]

参数说明:

ALL:包含所有组和结果集,甚至包含那些任何行都不满足WHERE子句指定的搜索条件的组和结果集。如果指定了ALL,将对组中不满足搜索条件的汇总列返回空值。不能用CUBE或ROLLUP运算符指定ALL。如果访问远程表的查询中有WHERE子句,则不支持Group By ALL操作。

Group_By_expression:对其执行分组的表达式。Group_By_expression也称为分组列。Group_By_expression可以是列或引用列的非聚合表达式。在选择列表内定义的列的别名不能用于指定分组列。对于不包含CUBE或ROLLUP的Group By子句,Group_By_ expression的项数受查询所涉及的Group By列的大小、聚合列和聚合值的限制。该限制从8060字节的限制开始,对保存中间查询结果所需的中间级工作表有8060字节的限制。如果指定了CUBE或ROLLUP,则最多只能有10个分组表达式。

CUBE:指定在结果集内不仅包含由Group By提供的正常行,还包含汇总行。在结果集内返回每个可能的组和子组组合的Group By汇总行。Group By汇总行在结果中显示为NULL,但可用来表示所有值。使用GroupING函数确定结果集内的空值是否是Group By汇总值。结果集内的汇总行数取决于Group By子句内包含的列数。Group By子句中的每个操作数(列)绑定在分组NULL下,并且分组适用于所有其他操作数(列)。由于CUBE返回每个可能的组和子组组合,因此,不论指定分组列所使用的是什么顺序,行数都相同。

ROLLUP:指定在结果集内不仅包含由Group By提供的正常行,还包含汇总行。按层次结构顺序,从组内的最低级别到最高级别汇总组。组的层次结构取决于指定分组列时所使用的顺序。更改分组列的顺序会影响在结果集内生成的行数。

使用Group By子句的注意事项。

(1)在SELECT子句的字段列表中,除了聚集函数外,其他所出现的字段一定要在Group By子句中有定义才行。例如“Group By A,B”,那么“SELECT SUM(A),C”就有问题,因为C不在Group By中,但是SUM(A)是可以的。

(2)SELECT子句的字段列表中不一定要有聚集函数,但至少要用到Group By子句列表中的一个项目。例如“Group By A,B,C”,则“SELECT A”是可以的。

(3)在SQL Server中text、ntext和image数据类型的字段不能作为Group By子句的分组依据。

(4)Group By子句不能使用字段别名。
1.按单列进行分组

Group By子句可以基于指定某一列的值将数据集合划分为多个分组,同一组内所有记录在分组属性上具有相同值。

示例:

把“student”表按照“性别”这个单列进行分组。在查询分析器中输入的SQL语句如下:

use student

select 性别

from student

Group By 性别

但仍然要强调SELECT子句必须与Group By后的子句或者是分组函数列相一致。

例如,由于下列查询中“姓名”列既不包含在Group By子句中,也不包含在分组函数中,所以是错误的。错误的SQL语句如下:

use student select 姓名,性别 from student Group By 性别

例如,在“grade”表中,按“学期”分组查询。SQL语句如下:

use studnet select 学期 from grade Group By 学期

2.按多列进行分组

Group By子句可以基于指定多列的值将数据集合划分为多个分组。

示例:

在“student”表中,按照“性别”和“年龄”列进行分组。在查询分析中输入的SQL语句如下:

use student

select 性别,年龄

from student

Group By 性别,年龄

在“student”表中,首先按照“性别”分组,然后再按照“年龄”分组。

再举一个例子,例如,在“grade”表中,按照“学号”和“课程代号”列进行分组。SQL语句如下:

use student

select 学号,课程代号 from grade Group By 学号,课程代号

按多列进行分组时有NULL组的是如何处理的。当表按多列进行分组时有NULL组,这时NULL被作为一个特定值处理,就像其他任何值一样。也就是说,如果在某个分组列中存在两个NULL,则按它们有相同的值那样处理,并将它们放在相同的组中。

示例:

在“grade”表中,按“学期”和“课程代号”列进行分组。在查询分析器中输入的SQL语句如下:

use student

select 学期,课程代号

from grade

Group By 学期,课程代号

3.与聚集函数一起使用

Group By子句是经常与聚集函数一起使用。如果SELECT子句中包含聚集函数,则计算每组的汇总值,当用户指定Group By时,选择列表中任一非聚集表达式内的所有列都应包含在Group By列表中,或者Group By表达式必须与选择列表表达式完全匹配。

示例:

在“student”表中,分别求男女生的平均年龄。在查询分析器中输入的SQL语句如下:

use student

select 性别,avg(年龄) as 平均年龄

from student

Group By 性别

例如,在“student”表中,分别求有多少个男生和女生。SQL语句如下:

use student

select 性别,count(性别) as 人数 from student Group By 性别

说明:关于聚合函数的详细讲解可参阅9.2.1节。

4.与HAVING子句一起使用

HAVING子句对Group By子句选择出来的结果进行再次筛选,最后输出符合HAVING子句中条件的记录。HAVING子句的语法与WHERE子句的语法相类似,惟一不同的是HAVING子句中可以包含聚合函数。

语法:

[HAVING <search_condition>]

参数说明:

<search_condition>:指定组或聚合应满足的搜索条件。当HAVING与Group By ALL一起使用时,HAVING 子句替代ALL。

示例:

在“student”表中,按“性别”分组求平均年龄,并且查询其平均年龄大于21的学生信息。在查询分析器中输入的SQL语句如下:

use student

select avg(年龄), 性别

from student

Group By 性别

having avg(年龄)>21

在“grade”表中,按“学期”分组求平均成绩,并且查询“平均成绩”大于93的课程信息。在查询分析器中输入的SQL语句如下:
+1 已赞过

❾ 在SQL查询GROUP BY语句用于什么

从关系数据库中的SQL查询得知,GROUP BY语句用于组合聚合函数以基于一个或多个列对结果集进行分组。

例如:

select distinct username from users group by username having count(*)>1

这句话的意思是:首先按用户名分组,然后找到其中count(*)> 1的记录,

即:查询以在用户表中查找具有相同用户名的多个记录的用户名。

(9)sql怎么查group扩展阅读:

通常在SELECT语句中使用分组子句,并且将进行聚合操作。 但是,分组子句对于执行聚合操作不是必需的。

例如,要查找直隶男同学的人数,此时只有一个合计值,因此无需将其分组。

SELECT COUNT(*)

from student

where ssex='男';

但是,当同一聚合操作有多个值时,必须使用分组子句。

例如:查找每个年龄段的学生人数。 此时存在多个与年龄有关的聚合值,因此必须将其分组。

❿ SQL如何计算有几组(GROUP BY 问题)

“Group
By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。
1、原始表
2、简单Group
By
示例1
select
类别,
sum(数量)
as
数量之和
from
A
group
by
类别
返回结果如下表,实际上就是分类汇总。
3、Group
By

Order
By
示例2
select
类别,
sum(数量)
AS
数量之和
from
A
group
by
类别
order
by
sum(数量)
desc
返回结果如下表
在Access中不可以使用“order
by
数量之和
desc”,但在SQL
Server中则可以。
4、Group
By中Select指定的字段限制
示例3
select
类别,
sum(数量)
as
数量之和,
摘要
from
A
group
by
类别
order
by
类别
desc
示例3执行后会提示下错误,如下图。这就是需要注意的一点,在select指定的字段要么就要包含在Group
By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。
5、Group
By
All
示例4
select
类别,
摘要,
sum(数量)
as
数量之和
from
A
group
by
all
类别,
摘要
示例4中则可以指定“摘要”字段,其原因在于“多列分组”中包含了“摘要字段”,其执行结果如下表
“多列分组”实际上就是就是按照多列(类别+摘要)合并后的值进行分组,示例4中可以看到“a,
a2001,
13”为“a,
a2001,
11”和“a,
a2001,
2”两条记录的合并。
SQL
Server中虽然支持“group
by
all”,但Microsoft
SQL
Server
的未来版本中将删除
GROUP
BY
ALL,避免在新的开发工作中使用
GROUP
BY
ALL。Access中是不支持“Group
By
All”的,但Access中同样支持多列分组,上述SQL
Server中的SQL在Access可以写成
select
类别,
摘要,
sum(数量)
AS
数量之和
from
A
group
by
类别,
摘要
6、Group
By与聚合函数
在示例3中提到group
by语句中select指定的字段必须是“分组依据字段”,其他字段若想出现在select中则必须包含在聚合函数中。
示例5:求各组平均值
select
类别,
avg(数量)
AS
平均值
from
A
group
by
类别;
示例6:求各组记录数目
select
类别,
count(*)
AS
记录数
from
A
group
by
类别;
示例7:求各组记录数目
8、Having与Where的区别
•where
子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
•having
子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having
条件过滤出特定的组,也可以使用多个分组标准进行分组。
示例8
select
类别,
sum(数量)
as
数量之和
from
A
group
by
类别
having
sum(数量)
>
18
示例9:Having和Where的联合使用方法
select
类别,
SUM(数量)from
A
where
数量
gt;8
group
by
类别
having
SUM(数量)
gt;
10
9、Compute

Compute
By
select
*
from
A
where
数量
>
8
执行结果:
示例10:Compute
select
*from
A
where
数量>8
ompute
max(数量),min(数量),avg(数量)
执行结果如下:
compute子句能够观察“查询结果”的数据细节或统计各列数据(如例10中max、min和avg),返回结果由select列表和compute统计结果组成。
示例11:Compute
By
select
*from
A
where
数量>8
order
by
类别
compute
max(数量),min(数量),avg(数量)
by
类别
执行结果如下:
示例11与示例10相比多了“order
by
类别”和“...
by
类别”,示例10的执行结果实际是按照分组(a、b、c)进行了显示,每组都是由改组数据列表和改组数统计结果组成,另外:
•compute子句必须与order
by子句用一起使用
•compute...by与group
by相比,group
by
只能得到各组数据的统计结果,而不能看到各组数据
在实际开发中compute与compute
by的作用并不是很大,SQL
Server支持compute和compute
by,而Access并不支持