ACCESS中where子句后面不能带聚合函数怎么办?

ACCESS中where子句后面不能带聚合函数怎么办?,第1张

你的where子句后应该是子查询

SELECT T1姓名, Avg(T1年龄) AS [平均年龄]

FROM TABLE1 AS T1

WHERE

     Avg(T1年龄) < (SELECT Avg(T2年龄) FROM TABLE1 AS T2)

GROUP BY T1姓名

希望没有打错

sql where嵌套select子查询

判定A表的数据是否存在B表,如果存在则显示存在,不存在则显示不存在

例如S#存在于SC表和student表中,判定s#是否都在student表中存在存在则显示存在,不存在则显示不存在,具体如下:

from student

select s#,

case when s# in(select s# from sc) then '存在'

when s# not in( select s# from sc) then '不存在'

end

from student

能用但是完全没有意义 因为count已经吧所有的记录条数球出来了 你还sum什么 也就是说 count返回一条记录 sum 是计算多条记录的和 返回一条记录当然 木有意义了 自己好好想象

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

这些函数返回 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值。

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

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

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

返回组中的项数。COUNT与COUNT_BIG函数类似。两个函数唯一的差别是它们的返回值。COUNT始终返回int数据类型值。COUNT_BIG始终返回bigint数据类型值。

Transact-SQL语法约定

语法

COUNT({[[ALL|DISTINCT]expression]|})

备注

COUNT()返回组中的项数。包括NULL值和重复项。

COUNT(ALLexpression)对组中的每一行都计算expression并返回非空值的数量。

COUNT(DISTINCTexpression)对组中的每一行都计算expression并返回唯一非空值的数量。

对于大于2^31-1的返回值,COUNT生成一个错误。这时应使用COUNT_BIG。

参数

ALL

对所有的值进行聚合函数运算。ALL是默认值。

DISTINCT

指定COUNT返回唯一非空值的数量。

expression

除text、image或ntext以外任何类型的表达式。不允许使用聚合函数和子查询。

指定应该计算所有行以返回表中行的总数。COUNT()不需要任何参数,而且不能与DISTINCT一起使用。COUNT()不需要expression参数,因为根据定义,该函数不使用有关任何特定列的信息。COUNT()返回指定表中行数而不删除副本。它对各行分别计数。包括包含空值的行。

重要事项:

使用CUBE或ROLLUP时,不支持区分聚合,如AVG(DISTINCTcolumn_name)、COUNT(DISTINCTcolumn_name)、MAX(DISTINCTcolumn_name)、MIN(DISTINCTcolumn_name)和SUM(DISTINCTcolumn_name)。如果使用这些聚合,MicrosoftSQLServer2005DatabaseEngine将返回一条错误消息并取消查询。

返回类型

int

示例

A使用COUNT和DISTINCT

以下示例列出了在AdventureWorksCycles工作的雇员可以拥有的不同标题的数量。

复制代码

USE;

GO

SELECTCOUNT(DISTINCTTitle)

FROMEmployee;

GO

下面是结果集:

复制代码

-----------

67

(1row(s)affected)

B使用COUNT()

以下示例计算AdventureWorksCycles的雇员总数。

复制代码

USE;

GO

SELECTCOUNT()

FROMEmployee;

GO

下面是结果集:

复制代码

-----------

290

(1row(s)affected)

C组合使用COUNT()和其他聚合函数

以下示例显示可以组合使用COUNT()和选择列表中的其他聚合函数。

复制代码

USE;

GO

SELECTCOUNT(),AVG(Bonus)

FROMSalesSalesPerson

WHERESalesQuota

GO

下面是结果集:

复制代码

--------------------------------

1434721428

(1row(s)affected)

你在WHERE子句中使用中了聚合函数

如果需要使用聚合函数做为过虑条件需要放在HAVING子句后面!

聚合函数包括:SUM、COUNT、AVG、MAX、MIN等

关系代数不能表达的查询示例有:

1 模糊查询:关系代数无法查询模糊的值,比如查询以“A”开头的记录,或者查询某个字符串中包含某个字符的记录。

2 聚合函数:关系代数无法使用聚合函数,比如计算某个字段的平均值,最大值或者其他类似的聚合函数。

3 关联查询:关系代数不能用来进行关联查询,比如查询某个字段在另一个表中是否存在。

4 子查询:关系代数不能用来进行子查询,比如查询某个字段在另一个表中是否存在。

5 分组查询:关系代数不能用来进行分组查询,比如查询某个字段在另一个表中某一分组中是否存在。

6 时间函数:关系代数不能用来进行时间函数查询,比如查询某个字段在一段时间内是否存在。

7 外部函数:关系代数不能用来进行外部函数查询,比如查询某个字段在外部数据库中是否存在。

8 内联查询:关系代数不能用来进行内联查询,比如查询某个字段在另一个表中的内容是否相同。

9 更新查询:关系代数不能用来进行更新查询,比如更新某个字段的值。

10 分页查询:关系代数不能用来进行分页查询,比如查询某个字段在另一个表中某一页的数据。

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

原文地址: http://outofmemory.cn/langs/11670566.html

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

发表评论

登录后才能评论

评论列表(0条)

保存