Sql Server 指定列的乘積

2021-09-22 13:49:04 字數 1122 閱讀 2393

需要統計指定列的乘積

sql server中有exp(sum(log(字段)))的函式

如下例子:

select    workorder ,

lineid ,

round(exp(sum(log(throughrate))), 4) * 100 as throughrate

from

#throughrate

group by workorder ,

lineid

exp(sum(log(字段))) 欄位的值是不能夠包含0的,否則出現無效浮點數操作的錯誤

其實如果指定列含有0的話,最終的乘積是0;所以考慮把結果集分成兩部分,等於0以及不等於0兩種情況計算,最終在合併查詢處理

select  m.workorder ,

m.lineid ,

case

when n.throughrate = 0

then

0else convert(decimal(18, 4), m.throughrate)

endas throughrate

from ( select workorder ,

lineid ,

round(exp(sum(log(throughrate))), 4) * 100

as throughrate

from #throughrate

where throughrate != 0

group

by workorder ,

lineid

) mleft

join ( select workorder ,

lineid ,

throughrate

from #throughrate

where throughrate = 0

group

by workorder ,

lineid ,

throughrate

) n on m.workorder = n.workorder

and m.lineid = n.lineid

讀取指定列

usr bin env python3 coding utf 8 import xlrd 開啟excel檔案,建立乙個workbook物件,book物件也就是fruits.xlsx檔案,表含有sheet名 rbook xlrd.open workbook key.xlsx sheets方法返回物件列...

linux 提取指定的列

提取name.txt 檔案中的最後一列中以 分割的第二列 awk 符擷取命令 awk f t name.txt awk f res.txt其中 f 表示分割符,nf表示最後一列,nf 1 表示倒數第二列 2表示第二列 0表示全部,1表示第一列 把上一步的資料和name.txt檔案合併生成乙個新的檔案...

select 指定 列值

two way roleid列並不在表sys user中,虛擬roleid列,指定roleid列的值均為aaa,以下兩種方式實現。1.username 為表sys user中存在的列。select userid,replace username,username,aaa as roleid from...