亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: awk 如何實(shí)現(xiàn)sql sum group by? [打印本頁(yè)]

作者: 541972321    時(shí)間: 2015-11-18 16:37
標(biāo)題: awk 如何實(shí)現(xiàn)sql sum group by?
大家好,我想實(shí)現(xiàn)如下的需求

例如:
1117 超市1  蘋果   10
1117 超市2  蘋果   20
1117 超市1  蘋果   50
1118 超市2  蘋果   100

變成這樣
1117 超市1  蘋果   60
1117 超市2  蘋果   20
1118 超市2  蘋果   100

該如何實(shí)現(xiàn)呢?

我在網(wǎng)上找了一條
awk '{a[$1]=a[$1]==""?$4:a[$1]","$4}END{for(i in a){c=split(a[i],b,",");{sum=0;for(j in b){sum+=b[j]};print i"\t"c"\t"sum}}}'


無(wú)奈沒(méi)明白 {a[$1]=a[$1]==""?$4:a[$1]","$4} 是咋回事,
所以特地來(lái)向各位大神請(qǐng)教

先謝謝大家拉
作者: haooooaaa    時(shí)間: 2015-11-18 16:42
沒(méi)看明白

這樣可以到你要的效果
  1. awk '{a[$1" "$2" "$3]+=$NF}END{for(i in a)print i,a[i] | "sort"}' file
  2. 1117 超市1 蘋果 60
  3. 1117 超市2 蘋果 20
  4. 1118 超市2 蘋果 100
復(fù)制代碼

作者: sync_1521    時(shí)間: 2015-11-18 16:50
a[$1]=a[$1]==""?$4:a[$1]","$4
可以解釋為
if(a[$1]==""){a[$1]=$4}else{a[$1]=a[$1]","$4}
作者: 541972321    時(shí)間: 2015-11-18 16:53
回復(fù) 2# haooooaaa


    這條腳本簡(jiǎn)單明了,多謝
作者: xrzs1986    時(shí)間: 2015-11-19 17:15
回復(fù) 1# 541972321

常用統(tǒng)計(jì)分析 SQL 在 AWK 中的實(shí)現(xiàn)
    http://my.oschina.net/leejun2005/blog/100710#OSC_h3_5
作者: jiajiagaga    時(shí)間: 2015-12-10 08:58
本帖最后由 jiajiagaga 于 2015-12-10 08:59 編輯

回復(fù) 2# haooooaaa


    請(qǐng)問(wèn)我假如有N列,怎么寫?? 謝謝啦 ,遇到相同問(wèn)題
作者: haooooaaa    時(shí)間: 2015-12-10 09:10
本帖最后由 haooooaaa 于 2015-12-10 09:10 編輯

回復(fù) 6# jiajiagaga


    不知道樣本不好說(shuō)。

如果也是最后一列。。。
  1. s="";for(i=0;++i<NF;)s=s $i" "; a[s]+=NF
復(fù)制代碼
。。。。
作者: jiajiagaga    時(shí)間: 2015-12-10 09:24
回復(fù) 7# haooooaaa
好滴,我先試試,謝謝啦。




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2