当前位置:首页 » 编程语言 » sql语句的聚合函数

sql语句的聚合函数

发布时间: 2023-07-09 03:09:25

A. 第十三章 sql聚合函数 XMLAGG

一个聚合函数,它创建一个串接的值字符串。

XMLAGG 聚合函数返回由 string-expr 中的所有值组成的串接字符串。
返回值的数据类型为 VARCHAR ,默认长度为 4096 。

以下两个示例都返回相同的单个值,即 Sample.Person 表的 Home_State 列中列出的所有值的串联字符串。

请注意,此连接字符串包含重复值。

返回值中将省略 string-expr 为NULL的行。如果至少返回一个非空字符串值,则从返回值中省略 string-expr 为空字符串( '' )的行。如果唯一非空的 string-expr 值是空字符串( '' ),则返回值是单个空字符串。

XMLAGG 不支持数据流字段。为 string-expr 指定流字段会导致 SQLCODE-37 。

XMLAGG 的一个常见用法是标记列中的每个数据项。这是通过组合 XMLAGG 和 XMLELEMENT 来实现的,如下例所示:

这将产生如下所示的输出字符串:

XMLAGG 函数将来自多行的表列的值连接到单个字符串中。因为在计算所有聚合字段之后,将逐个从句应用于查询结果集,所以逐个不能直接影响该字符串中的值序列。在某些情况下, XMLAGG 结果可能会按顺序显示,但不应依赖此排序。给定聚合结果值中列出的值无法显式排序。

下面的示例创建在 Sample.Person 表的 FavoriteColors 列中找到的所有不同值的串联字符串。因含颂此,对于 ALL_COLLES 列,每行都有相同的值。请注意,虽然有些行的 FavoriteColors 为空值,但该值不包括在连接的字符串中。数据值以内部格式返回。

下面的示例返回以 “A” 开头的 Home_State 值的串联字顷旅符串。它返回不同的 Home_State 值(不同的 Home_State );与不同的 Home_City 值对应的 Home_State 值(与( Home_City ) Home_State 不同),其中可能包括 Home_City 的一个唯一NULL;以及所有 Home_State 值:

下面的示例为每个州创建在 Home_City 列中找到的所有不同值的串联字符串。同一州的每一行都包含该州所有不同城市值的列表:

以下示例使用 %AFTERHAVING 关键字。它为雀老凳每个包含至少一个满足 HAVING 子句条件(以 “C” 或 “K” 开头的名称)的 Name 值的 Home_State 返回一行。第一个 XMLAGG 函数返回由该州的所有名称组成的连接字符串。第二个 XMLAGG 函数返回仅由满足 HAVING 子句条件的名称组成的连接字符串:

对于以下示例,假设我们有下表 AutoClub :

B. sql语句中如何将聚合函数值和另一个值相乘

sql中提供的聚合函数,通常包括sum,count,avg,max,min,但不包括乘法;
比如有这样一个数据集:
id x
1 1
1 2
1 3
2 4
2 5
2 6
;
想实现成如下形式
id prob_x
1 6
2 120
即让第一组中1*2*3=6
第二组中4*5*6=120
用data步中first+retain可以实现,但data需要先排序;
而sql的聚合函数中也没有相乘这一函数,于是有些牛人想到通过数学转化,将乘法镇凳拍转为加法,而sql中可以
用sum实现加法聚合。
说来也简单,主要想法就是A*B=exp(lnA*B)=exp(lnA+lnB);
select id,exp(sum(log(x))) as prob_x from data_set group by id;
=============================================
但我觉得也需要补充一点东西:
首先有0的情况粗笑下,log函数的定御羡义域为{x>0},有0出现的时候,改组最后结果肯定为0;
其次是有负数的情况,需要对绝对值进行计算,计算每组负数的个数,如果负数是偶数个,那么结果为正,
如果为奇数个,则需要在结果上添上负号。
最后可以写成这样
select id,(case when sum(case when x=0 then 1 else 0 end) >0 then 0
when mod(sum(case when x<0 then 1 else 0 end),2)=0 then exp(sum(log(x)))
else -1*exp(sum(log(abs(x)))) end) as prod_x from data_set group by id;

C. sql聚合函数有哪些

聚集函数
和大多数其它关系数据库产品一样,PostgreSQL
支持聚集函数。一个聚集函数从多个输入行中计算出一个结果。比如,我们有在一个行集合上计算
count(数目),
sum(总和),
avg(均值),
max(最大值),
min(最小值)的函数。
比如,我们可以用下面的语句找出所有低温中的最高温度:
SELECT
max(temp_lo)
FROM
weather;
max
-----
46
(1
row)如果我们想知道该读数发生在哪个城市,可能会用:
SELECT
city
FROM
weather
WHERE
temp_lo
=
max(temp_lo);
--
错!不过这个方法不能运转,因为聚集函数
max
不能用于
WHERE
子句中。存在这个限制是因为
WHERE
子句决定哪些行可以进入聚集阶段;因此它必需在聚集函数之前计算。不过,我们可以用其它方法实现这个目的;这里我们使用子查询:
SELECT
city
FROM
weather
WHERE
temp_lo
=
(SELECT
max(temp_lo)
FROM
weather);
city
---------------
San
Francisco
(1
row)这样做是可以的,因为子查询是一次独立的计算,它独立于外层查询计算自己的聚集。
聚集同样也常用于
GROUP
BY
子句。比如,我们可以获取每个城市低温的最高值:
SELECT
city,
max(temp_lo)
FROM
weather
GROUP
BY
city;
city
|
max
---------------+-----
Hayward
|
37
San
Francisco
|
46
(2
rows)这样每个城市一个输出。每个聚集结果都是在匹配该城市的行上面计算的。我们可以用
HAVING
过滤这些分组:
SELECT
city,
max(temp_lo)
FROM
weather
GROUP
BY
city
HAVING
max(temp_lo)
<
40;
city
|
max
---------+-----
Hayward
|
37
(1
row)这样就只给出那些
temp_lo
值曾经有低于
40
度的城市。最后,如果我们只关心那些名字以"S"开头的城市,我们可以用:
SELECT
city,
max(temp_lo)
FROM
weather
WHERE
city
LIKE
'S%'
GROUP
BY
city
HAVING
max(temp_lo)
<
40;语句中的
LIKE
执行模式匹配,在节9.7里有解释。
理解聚集和
SQL

WHERE

HAVING
子句之间的关系非常重要。WHERE

HAVING
的基本区别如下:WHERE
在分组和聚集计算之前选取输入行(它控制哪些行进入聚集计算),而
HAVING
在分组和聚集之后选取输出行。因此,WHERE
子句不能包含聚集函数;因为试图用聚集函数判断那些行将要输入给聚集运算是没有意义的。相反,HAVING
子句总是包含聚集函数。当然,你可以写不使用聚集的
HAVING
子句,但这样做没什么好处,因为同样的条件可以更有效地用于
WHERE
阶段。
在前面的例子里,我们可以在
WHERE
里应用城市名称限制,因为它不需要聚集。这样比在
HAVING
里增加限制更加高效,因为我们避免了为那些未通过
WHERE
检查的行进行分组和聚集计算。

D. sql server中什么是聚合函数

count() 所有记录数
count(*)所有非null记录数
avg() 某一列平均值

min() 某一列最小值
max() 某一列最大值
sum() 某一列总和

E. 在sql中什么是聚合函数 啊

select sum(字段名) from 表名
sum 就是一个聚合函数,求某一字段的值

F. SQL Server中的聚合函数有哪些

SQL Server中的聚合函数有:

1.count() 所有记录数

2.count(*)所有非null记录数

3.avg() 某一列平均值

4.min() 某一列最小值

5.max() 某一列最大值

6.sum() 某一列总和

使用方法:

1. SELECT COUNT(字段1) FROM 表A 统计字段1在表A中出现的次数

2. SELECT 学号,SUM(各科成绩) FROM student GROUP BY 学号 用来根据统计学生的总成绩

G. SQL语句中 聚合函数count()忽略空值么

SQL语句函数count(),如果括号中是列名称,是忽略空值NULL的,即返回列的值的数目,不包含NULL值。

COUNT函数简陵盯,用于Excel中对给定数据集合或者单元格区域中数据的拦和个数进行计数,其语法结构为COUNT(value1,value2, ...)。COUNT函数只能对数字数据进行统计,对于空单元格、逻辑值或者文本数据将被忽略,因此可以利用该函数来判断给定的单元格区域中是否包含空单元格。

(7)sql语句的聚合函数扩展阅读:

如果参数是一个数组或引用,那么只统计数组或引用中的数字;数组中或引用的空单元格、逻辑值、文字或错误值都将忽略。具体如下:

如果参数为数字、日期或者代表数字的文本(汪野例如,用引号引起的数字,如 "1"),则将被计算在内。

逻辑值和直接键入到参数列表中代表数字的文本被计算在内。

如果参数为错误值或不能转换为数字的文本,则不会被计算在内。

如果参数为数组或引用,则只计算数组或引用中数字的个数。不会计算数组或引用中的空单元格、逻辑值、文本或错误值。

热点内容
linux进程的退出 发布:2025-02-09 03:00:22 浏览:813
淘宝上传时间 发布:2025-02-09 02:42:13 浏览:637
ios缓存数据 发布:2025-02-09 02:32:06 浏览:253
苹果手机如何存储word 发布:2025-02-09 02:23:02 浏览:780
安卓手机如何有苹果的emoji 发布:2025-02-09 02:11:02 浏览:808
编译原理已知语言求文法习题 发布:2025-02-09 02:05:15 浏览:132
中国首个具有世界影响力的编译器 发布:2025-02-09 01:56:21 浏览:720
tomcat上传超时 发布:2025-02-09 01:41:42 浏览:484
androidactivity竖屏 发布:2025-02-09 01:41:40 浏览:378
家庭配置怎么合理 发布:2025-02-09 01:36:14 浏览:808