加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

sql分组之后求乘积可用Exp(sum(LOG(AA)))该函数

(2014-06-04 20:21:14)
标签:

exp

分类: SqlServer
declare  @A  table (AA int)
insert into @A (AA)  values(1)
insert into @A (AA)  values(2)
insert into @A (AA)  values(3)
insert into @A (AA)  values(4)

select Exp(sum(LOG(AA))) from @A


注意:

使用這個語法來計算每筆資料列的相乘
需特別注意 用來接收的變量不可為INT
建議可以使用十進位
EXP(SUM(LOG(f_count)))

已下為測試語法
declare @aa table (f_aa int)
insert into @aa (f_aa) values (1)
insert into @aa (f_aa) values (1)
insert into @aa (f_aa) values (2)
insert into @aa (f_aa) values (2)
insert into @aa (f_aa) values (3)
insert into @aa (f_aa) values (3)
select * from @aa

--declare @bb table (f_bb INT)
--insert into @bb (f_bb)
--这里我用int型來存放的話,得到的值是7
declare @bb int = 
(select EXP(SUM(LOG(f_count))) from
(select count(*) as f_count from @aa group by f_aa) as tt)

select @bb
--如果我用decimal來存放,得到的是8
declare @bb int = 
(select EXP(SUM(LOG(f_count))) from
(select count(*) as f_count from @aa group by f_aa) as tt)

select @bb
--這裡我用10000來乘以這個數字,int型的話,得到79999
declare @bb int = 10000
(select EXP(SUM(LOG(f_count))) from
(select count(*) as f_count from @aa group by f_aa) as tt)

select @bb
--這裡我用10000來乘以這個數字,decimal型的話,得到80000
declare @bb int = 10000
(select EXP(SUM(LOG(f_count))) from
(select count(*) as f_count from @aa group by f_aa) as tt)

select @bb


查到EXP:傳回指定float運算式的指數值

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有