PowerShell

PowershellでGruop化集計

More than 3 years have passed since last update.


はじめに

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


参考サイト

powershellでcsvの集計 - @nifty教えて広場