你的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 分页查询:关系代数不能用来进行分页查询,比如查询某个字段在另一个表中某一页的数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)