はじめに
informixの中途パンパなSQLのCase式はGroup化して合計ができない。
仕方なしに一度csvに出力してPowerShellで集計してやることにした。
合計は想定されているがグループ化して集計というのは、
あまり用途が無いようでサンプルを探すのに苦労した。
Gruop化の仕方と集計
まず下記のcsvファイルを用意する。
nameでGroup化してval1からval3の合計を出したい。
test.csv
test.csv
name,val1,val2,val3
aaa1,15,15,26
bbb1,100,100,200
aaa1,15,15,26
bbb1,20,30,25
まずは、val1をグループ化して合計。
ワンライナーだが見やすくするために、
行の終わりに「`」(バッククオート)を追加して
改行している。
val1をグループ化して合計
PS > Import-Csv test.csv `
>> | group Name `
>> | select Name, `
>> @{Name="Total";Expression={($_.group| Measure-Object -sum val1).sum}}
>>
合計
Name Total
---- -----
aaa1 30
bbb1 120
次に、val1からval3の合計を出す。
val1からval3をGruop化して合計
PS > Import-Csv test.csv `
>> | group Name `
>> | select Name, `
>> @{Name="val1";Expression={($_.group| Measure-Object -sum val1).sum}}, `
>> @{Name="val2";Expression={($_.group| Measure-Object -sum val2).sum}}, `
>> @{Name="val3";Expression={($_.group| Measure-Object -sum val3).sum}}
>>
合計
Name val1 val2 val3
---- ---- ---- ----
aaa1 30 30 52
bbb1 120 130 225