当前位置:首页 » 编程语言 » sql聚合函数可出现在查询子句
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql聚合函数可出现在查询子句

发布时间: 2023-04-03 23:41:19

sql 语句中那些是聚合函数

常见聚合函数,max(最大)、min(最小)、sum(求和)、avg(平均)等,

示例如下,

1、创建测试表,

create table test_group(id number, value number);

Ⅱ 一文讲懂SQL子查询

大家好,我是宁一。


今天讲解SQL教程第18课:子查询。


SQL语句可以嵌套,最常见的就是查询语句的嵌套。


基本语法:



我们一般称外面嵌套的语句为主查询,里面被嵌套的语句为子查询,有时也会叫外查询、内查询,大家知道意思就好。


子查询要用括号括起来。子查询不仅可以放在WHERE的后面,还可以放在SELECT、FROM的后面,我们一个个来讲解。


1、子查询+WHERE子句


SQL执行时,会先执行括号内的子查询,子查询最常与WHERE子句结合使用。子查询的结果作为WHERE子句的筛选条件,完成更复杂的数据检索。


实例: 在Students表中,找出所有在"宁一"后面出生的学生。



实例解析: 需要先确定"宁一"的生日,再将生日作为WHERE筛选条件,得到最终数据。


第一步:找到"宁一"的生日




第二步:将生日作为WHERE筛选条件,得到最终数据,子查询语句要用括号括起来。






SELECT语句的子查询经常与聚合函数结合使用。因为我们使用聚合函数的时候,记录会合成一条,其它数据细节就不能显示了。


比如: 我们想要查看学生表中所有的学生姓名、学生生日、学生的最大生日。


示例结果:



错误写法:



像上面这样写是会报错的,因为聚合函数与其他表中的列(Sname,Sage),同时放在SELECT的后面。需要用GROUP BY语句将这些表中的列(Sname,Sage)分组。


上面的语句后面加上 GROUP BY Sname,Sage 就可以了。


但是这样写,会将每组的数据聚合成1条数据,比如每组有3条数据,使用聚合函数MAX()+GROUP BY,最终每组只会显示1条最大值的数据。


我们需要展现Students表中所有的学生,这样写不能满足我们的需求。


正确写法: 结合子查询来实现。




子查询与FROM子句结合使用,子查询结果被当成了一个“表”,可以用SELECT语句做进一步的筛查。


比如:我们先写一个SELECT查询语句




将上面的查询语句放在FROM的后面,则上面查询到的结果,就会被当成一个“表”。



这里有一个特别要注意的地方,放在FROM后面的子查询,必须要加别名。



复杂的子查询再嵌套进 FROM 里会让整个查询看起来过于复杂,我们一般会将子查询结果储存为视图,然后再直接使用视图作为来源表,视图会SQL高阶课程中详细讲解。


其实子查询就是查询语句嵌套,没有什么新的东西,只是多了一个层级,由内向外地一层层梳理就会很清楚了。


作业: 结合Students表,从Teachers表中找出当班主任的老师(通过子查询实现)。



作业解析: 先从Students表中,找出所有班主任的Tid并去重,将查询结果作为筛选条件,放在WHERE语句中。



Ⅲ 第十二章 SQL聚合函数 VARIANCE, VAR_SAMP, VAR_POP

返回数据集统计方差的聚合函数。

这些函数返回 NUMERIC 数据类型,除非表达式是数据类型 DOUBLE 。
如果 expression 为 DOUBLE ,则返回 DOUBLE 。

这三个方差聚合函数在丢弃 NULL 值后返回表达式值的统计方差。
也就是说,从数据集的平均值变化的量,表示为一个正数。
返回值越大,值的数据集的变化就越大。
SQL还提供聚合函数来返回对应于每个方差函数的标准偏差。

在这种统计差异的推导过程中有一些细微的差异:

方差计算为:

VAR_POP 的计算是:

这些方差聚合函数可以在引用表或视图的 SELECT 查询或子查询中使用。
它们可以在 SELECT 列表或 HAVING 子句中与普通字段值一起出现。

这些方差聚合函数不能在WHERE子句中使用。
它们不能在 JOIN 的 ON 子句中使用,除非 SELECT 是子查询。

这些方差聚合函数返回数据类型NUMERIC的值,精度为 36 ,刻度为 17 ,除非表达式是数据类型 DOUBLE ,在这种情况下,函数返回数据类型 DOUBLE 。

这些方差聚合函数通常应用于具有数值的字段或表达式。
它们将非数值值(包括空字符串( " ))计算为零( 0 )。

这些方差聚合函数忽略数据字段中的 NULL 值。
如果查询没有返回行,或者返回的所有行的数据字段值为 NULL ,则返回 NULL 。

与所有聚合函数一样,统计方差函数可以采用一个可选的 DISTINCT 子句。
方差( DISTINCT col1 )返回那些不同(唯一)的 col1 字段值的方差。
方差( DISTINCT BY(col2) col1 )返回记录中col1字段值的方差,其中col2值是不同的(唯一的)。
但是请注意,不同的col2值可能包含一个单独的NULL值。

与所有聚合函数一样,方差函数总是返回数据的当前状态,包括未提交的更改,而不管当前事务的隔离级别如何。

下面的示例使用方差返回 sample.employee 中雇员年龄的方差,以及由一个或多个雇员表示的不同年龄的方差:

下面的示例使用 VAR_POP 返回 sample.employee 中雇员年龄的总体差异,以及由一个或多个雇员表示的不同年龄的差异:

Ⅳ 为什么聚集函数不能出现在where子句中

count()是一个聚集函数(也称为聚合函数)是为了选定行的数目,可以包含空值。group by 是分组, 可以按照一个多多个字段分组。 使用时应注意:select 后显示的信息:要么包含在聚集函数中,要么包含在group by 子句中。where :是一个条件语句,在where后面跟的是条件!

Ⅳ sql中表示查询条件的子句有where和什么

from:从哪些表中筛选
where:从表中筛选的条件
group by:分组依据
having:在统计结果中再次筛选
order by:排序
limit:分页
having与where的区别在于,where是从表中筛选的条件,而having是统计结果中再次筛选。也就是说where后面不能加“分组/聚合函数”,而having后面则可以。

Ⅵ sql聚合函数的应用

我们知道数据库通常包含大量数据,要从海量的数据中找到我们需要的某条记录无异于大海捞针,不过通过SQL语言我们可以找到很多方法从数据库中提取我们要查找的特定数据,就是通过这些方法我们才能找到“列举出七八两个月中购买了西伯利亚羊毛的所有顾客的姓名”这类问题的答案。很多时候,我们还希望能够通过对数据进行分析,总结出规律和趋势或生成高水平的报表。例如,对于采购经理来说,他可能对所有销售出去的产品清单不感兴趣,而只是想要知道这个月产品的销售量。SQL提供了聚合函数(aggregate functions)功能来支持对大量数据进行总结的操作。本文我们将具体来看看这些函数的功能和用法,包括添加数据和计算平均值的函数、对符合特定标准的记录进行计数的函数,以及找出表中最大值和最小值的函数。我们将使用下文所示的ProctOrder表来执行我们所有的查询。注意,这个表并没有标准化,而是将几个数据实体联合到一个表中,这样做是为了简化条件方便说明。如果要设计较好的关系数据库,应当把这些内容至少分成三个关联表Procts、Orders和Customers。订单号 客户名 客户姓 数量 单价 所在地 122 John Jacob 21 4.52 北美洲 923 Ralph Wiggum 192 3.99 北美洲 238 Ryan Johnson 87 4.49 非洲 829 Mary Smith 842 2.99 北美洲 824 Elizabeth Marks 48 3.48 非洲 753 James Linea 9 7.85 北美洲 942 Alan Jonas 638 3.29 欧洲 我们先从SUM函数开始。这个函数通常在SELECT语句中使用,返回系列值的总数。假设产品项目经理想了解目前为止商品的总销售额,那么我们可以使用以下的查询脚本:SELECT SUM(数量) AS 总数 FROM ProctOrders 执行语句将返回以下结果: Total ----------- 1837 AVG函数(平均函数)使用方法和SUM类似,它给我们提供系列值的算术平均数。这次我们可以尝试稍微复杂点的任务:找出北美洲大陆所有订单的金额平均值。注意,我们需要将“数量”列和“单价”列相乘计算出每张订单的金额总数。查询脚本如下: http://database.ctocio.com.cn/tips/116/8051116.shtml

Ⅶ SQL中where语句能用聚合函数吗

聚合函数应该用在having子句中。

聚合函数如果冲樱想用在where中的话,应该只塌粗能用子查询来实现(在子查询中进行聚合函数计算,然后在主查询中进行where判断)团判镇。

Ⅷ SQL中只要用到聚合函数就一定要用到group by 吗

SQL中只要用到聚合函数就不一定要用到group by。聚合函数是对一组值执行计算,并返回单个值,也被称为组函数。 聚合函数可以应用于SELECT 查询语句的 GROUP BY 子句的HAVING子句中,但不可用于WHERE语句中,因为WHERE是对逐条的行记录进行筛选。

(8)sql聚合函数可出现在查询子句扩展阅读:

Transact-SQL编程语言提供的聚合函数有:

1、AVG:返回指定组中的平均值,空值被忽略。例:select prd_no,avg(qty) from sales group by prd_no.

2、COUNT:返回指定组中项目的数量。例:select count(prd_no) from sales.

3、COUNT_BIG:返回指定组中的项目数量,与COUNT函数不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。例:select count_big(prd_no) from sales.

4、MIN:返回指定数据的最小值。例:select prd_no,min(qty) from sales group by prd_no.

5、MAX:返回指定数据的最大值。例:select prd_no,max(qty) from sales group by prd_no.


Ⅸ sql聚合函数的应用

聚合函数对一组值执行计算,并返回单个值。除了
COUNT
以外,聚合函数都会忽略空值。聚合函数经常与
SELECT
语句的
GROUP
BY
子句一起使用。
所有聚合函数均为确定性函数。也就是说,只要使用一组特定输入值调用聚合函数,该函数总是返回相同的值。有关函数确定性的详细信息,请参阅确定性函数和不确定性函数。
聚合函数只能在以下位置作为表达式使用:
SELECT
语句的选择列表(子查询或外部查询)。
COMPUTE

COMPUTE
BY
子句。
HAVING
子句。
Transact-SQL
提供下列聚合函数:
AVG
MIN
CHECKSUM
SUM
CHECKSUM_AGG
STDEV
COUNT
STDEVP
COUNT_BIG
VAR
GROUPING
VARP

Ⅹ 第十章 SQL聚合函数 STDDEV, STDDEV_SAMP, STDDEV_POP

返回数据集的统计标准差的聚合函数。

除非表达式的数据类型为 DOUBLE ,否则这些函数将返回数字数据类型。如果表达式为 DOUBLE ,则返回 DOUBLE 。

这三个标准差聚合函数在丢弃NULL值后返回表达式值分布的统计标准差。
也就是说,从数据集的平均值的标准差的量,表示为一个正数。
返回值越大,值的数据集的变化就越大。

STDDEV、STDDEV_SAMP (sample) 和 STDDEV_POP (population) 函数是由相应的方差聚合函数派生而来的:

标准差是相应方差值的平方根。

这些标准差函数可以在引用表或视图的 SELECT 查询或子查询中使用。
它们可以在 SELECT 列表或 HAVING 子句中与普通字段值一起出现。

这些标准偏差函数不能在 WHERE 子句中使用。
它们不能在 JOIN 的 ON 子句中使用,除非 SELECT 是子查询。

这些标准偏差函数返回数据类型 NUMERIC 的值,精度为 36 ,刻度为 17 ,除非表达式是数据类型 DOUBLE ,在这种情况下它返回数据类型 DOUBLE 。

这些函数通常应用于具有数值的字段或表达式。
它们将非数值值(包括空字符串( " ))计算为零( 0 )。

这些标准偏差函数会忽略数据字段中的 NULL 值。
如果查询没有返回行,或者返回的所有行的数据字段值为 NULL ,则返回 NULL 。

与所有聚合函数一样,标准差函数可以采用一个可选的 DISTINCT 子句。
STDDEV(DISTINCT col1) 返回那些不同(唯一)的 col1 字段值的标准偏差。
STDDEV(DISTINCT BY(col2) col1) 返回记录中 col1 字段值的标准差,其中 col2 值是不同的(唯一的)。
但是请注意,不同的 col2 值可能包含一个单独的 NULL 值。

与所有聚合函数一样,标准偏差函数总是返回数据的当前状态,包括未提交的更改,而不考虑当前事务的隔离级别。

下面的示例使用 STDDEV 返回员工年龄的标准偏差。
,以及一个或多个员工代表的不同年龄的标准差:

下面的示例使用 STDDEV_POP 返回员工年龄的总体标准差。
,以及一个或多个员工代表的不同年龄的标准差: