以下は商品部門・地域別の売数推移の帳票を作成するプログラムである。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
#!/bin/sh # # BUMONTREND : 部門別売数推移(地域別内訳) # # Usage: BUMONTREND # # Written by N.Tounaka(xxxxxxx@usp-lab.com) / Date : 12 Jun.2012 # Arranged by USP MAGAZINE(xxx@usp-lab.com) / Date : 12 Jun.2012 # 変数の定義 tmp=tmp start=20071203 end=20071209 ##################################################################### # 販売データの集計 # URE 1.店コード 2.商品コード 3.日付 4.売数 5.売上高 6.値引高 # BUMON 1.商品コード 2.部門コード # TENAREA 1.店コード 2.エリアコード # AREANAME 1.エリアコード 2.エリア名 # BNAME 1.部門コード 2.部門名 ##################################################################### awk '$3>='$start'&&$3<='$end'{print}' URE | join1 key=2 BUMON | sort -k1,1 | join1 key=1 TENAREA | # [LAYOUT] 1.店コード 2.エリアコード 3.商品コード 4:部門コード # 5.日付 6.売数 7.売上高 8.値引高 # self 4 2 5 6 | # [LAYOUT] 1.部門コード 2.エリアコード 3.日付 4.売数 sort -k1,3 | sm2 1 3 4 4 | sort -k2,2 | join1 key=2 AREANAME | sort -k1,1 | join1 key=1 BNAME | # [LAYOUT] 1.部門コード 2.部門名 3.エリアコード 4.エリア名 5.日付 6.売数 awk '{print $1":"$2,$3":"$4,$5,$6}' | # [LAYOUT] 1.部門コード:部門名 2.エリアコード:エリア名 3.日付 4.売数 yobi -j 3 | awk '{$3=$3"("$4")";print}' | delf 4 | # [LAYOUT] 1.部門コード:部門名 2.エリアコード:エリア名 3.日付(曜日) 4.売数 # map : 部門/エリア単位に売数を日付横展開 # map num=2 | # awk : ヘッダー行を月/日(曜日)の形に加工 # awk 'NR==1{for(i=3;i<=NF;i++){$i=substr($i,5,2)"/"substr($i,7)};print} NR>1{print}' | # ysum : 期間合計を付加する # ysum +h num=2 | # sm4 : 部門ごとの合計行を挿入する # sm4 +h 1 1 2 2 3 NF | awk '{if($2~/@/){$2="9999:全国計"};print}' | # awk : ヘッダー行の編集 # awk 'NR==1{$1="部門";$2="エリア";$NF="期間合計";print} NR>1{print}' | comma +h 3/NF | # awk : 部門ごとに罫線(横)を挿入する # awk 'BEGIN{k=sprintf("%0118d",0);gsub("0","=",k);} NR<=2{print;if(NR==1){print k;gsub("=","-",k);f=$1;}} NR>2{if($1!=f){f=$1;print k;}else if($1==f){f=$1;$1="@";}print;} END{print k;}' | keta -16 -12 10xNF-3 11 | tr '@' ' ' > $tmp-body # ヘッダーをつくる y1=$(echo $start | cut -b 1-4) m1=$(echo $start | cut -b 5-6) d1=$(echo $start | cut -b 7-8) w1=$(yobi -dj $start) y2=$(echo $end | cut -b 1-4) m2=$(echo $end | cut -b 5-6) d2=$(echo $end | cut -b 7-8) w2=$(yobi -dj $end) cat << END > $tmp-header [ 部門別売数推移(エリア内訳) ] 出力 : $(date) ユーザー : $USER 集計期間 : ${y1}年${m1}月${d1}日(${w1}) - ${y2}年${m2}月${d2}日(${w2}) END # ヘッダーとデータを合わせて出力 cat $tmp-header $tmp-body # 終了 rm -f $tmp-* exit 0 |
このシェルスクリプトによって次の帳票テキストデータが生成される。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
[ 部門別売数推移(エリア内訳) ] 出力 : 2012年 6月 12日 火曜日 11:37:12 JST ユーザー : usp 集計期間 : 2007年12月03日(月) - 2007年12月09日(日) 部門 エリア 12/03(月) 12/04(火) 12/05(水) 12/06(木) 12/07(金) 12/08(土) 12/09(日) 期間合計 ====================================================================================================================== 001:野菜 1001:北海道 219,060 200,540 188,700 466,140 767,240 307,880 256,260 2,405,820 1002:東北 801,520 770,380 776,260 1,779,080 3,103,740 1,406,820 1,440,400 10,078,200 1003:関東 1,508,682 1,435,524 1,527,662 3,657,046 6,151,328 2,386,452 2,358,427 19,025,121 1004:中部 925,600 901,900 1,010,100 2,357,820 3,876,960 1,328,460 1,401,480 11,802,320 1005:近畿 538,160 528,840 627,180 1,479,700 2,331,060 839,360 1,066,000 7,410,300 1006:中四国 793,080 771,740 657,420 1,948,460 2,840,420 1,402,460 1,198,920 9,612,500 1007:九州 1,022,780 969,840 910,300 2,454,180 3,829,140 1,364,320 1,475,900 12,026,460 9999:全国計 5,808,882 5,578,764 5,697,622 14,142,426 22,899,888 9,035,752 9,197,387 72,360,721 ---------------------------------------------------------------------------------------------------------------------- 002:果物 1001:北海道 135,560 176,400 178,560 479,140 758,660 334,340 145,080 2,207,740 1002:東北 645,560 528,240 672,000 1,480,240 2,100,880 1,020,220 997,440 7,444,580 1003:関東 1,120,240 1,292,420 1,045,520 3,115,860 4,604,960 1,869,160 2,074,980 15,123,140 1004:中部 744,940 783,120 731,860 1,876,680 2,983,840 1,048,560 1,242,560 9,411,560 1005:近畿 433,920 478,880 444,260 1,169,600 1,659,360 879,900 769,900 5,835,820 1006:中四国 593,540 640,560 547,280 1,720,500 2,111,420 878,580 854,960 7,346,840 1007:九州 738,640 732,820 753,080 1,744,780 2,786,160 1,140,840 1,294,920 9,191,240 9999:全国計 4,412,400 4,632,440 4,372,560 11,586,800 17,005,280 7,171,600 7,379,840 56,560,920 ---------------------------------------------------------------------------------------------------------------------- 003:魚介類 1001:北海道 236,760 234,060 210,440 459,940 814,420 302,080 231,320 2,489,020 1002:東北 853,480 881,020 755,400 1,945,400 2,971,220 1,015,780 1,209,820 9,632,120 1003:関東 1,707,760 1,784,320 1,617,980 4,014,920 5,572,080 2,568,960 2,637,820 19,903,840 1004:中部 1,071,700 961,360 1,121,160 2,410,680 3,779,520 1,544,360 1,777,260 12,666,040 1005:近畿 619,860 607,840 587,200 1,584,200 2,362,300 1,035,640 972,340 7,769,380 1006:中四国 782,640 878,100 709,480 1,905,380 3,044,100 1,591,460 1,350,780 10,261,940 1007:九州 1,026,360 1,102,000 996,720 2,642,520 3,517,860 1,518,280 1,676,320 12,480,060 9999:全国計 6,298,560 6,448,700 5,998,380 14,963,040 22,061,500 9,576,560 9,855,660 75,202,400 : : |