❶ 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语句中如何将聚合函数值和另一个值相乘
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;
❸ sql语句中group by,聚合函数的使用。单行子查询返回多行怎么办求解答!
两个办法。
(1)联合查询(oracle写法,如为其他数据库自行修改,这里只提供思路)
select table.id,table.XXXXX,table.XXXXX,table.caption,table.XXXXX from table,(select id,max(caption) max_cap from table group by id) b where table.id=b.id and table.caption=b.max_cap
(2)组合查询
select * from table where id||'_'||caption in (select id||'_'||max(caption) max_cap from table group by id)
加_是为了方防止出现特殊情况,比如id=1,caption=130 和id=11,caption=30的情况出现
不知道你是什么数据库,||是Oracle的连接符,用于连接字符串,其他数据库应该也有类似的东西,这个就自己掌握吧
❹ sql字符串连接函数
MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +
CONCAT() 的语法如下:
CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。
请注意,Oracle的CONCAT()只允许两个参数;
换言之,一次只能将两个字串串连起来。不过,在Oracle中,我们可以用'||'来一次串连多个字串。
来看几个例子。假设我们有以下的表格:
Geography 表格
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
例子1:
MySQL/Oracle:
SELECT CONCAT(region_name,store_name) FROM Geography
WHERE store_name = 'Boston';
结果:
'EastBoston'
例子2:
Oracle:
SELECT region_name || ' ' || store_name FROM Geography
WHERE store_name = 'Boston';
结果:
'East Boston'
例子3:
SQL Server:
SELECT region_name + ' ' + store_name FROM Geography
WHERE store_name = 'Boston';
结果:
'East Boston'
❺ sql 语句中那些是聚合函数
常见聚合函数,max(最大)、min(最小)、sum(求和)、avg(平均)等,
示例如下,
1、创建测试表,
create table test_group(id number, value number);