基本帳票編:年代別数量金額合計

本章では、初級コマンドで用いた2002年のデータを用いて、下図に示すような「年代別数量金額合計」の帳票を作成する。


出力結果

顧客の年代別売上数量金額

チュートリアル

年代 数量 金額
10 879 335936
20 4542 1756687
30 19030 7416259
40 17381 6766661
50 9672 3757351
60 1689 655321
70 250 98641

処理の流れ

 通常、会員制を採用している小売店では、顧客情報として誕生日を登録している。誕生日から年齢を求めるためには、いつを基準に年齢を求めるかを決めなければならない。通常、その方法には2つある。一つ目の方法は、各顧客が来店した日を基準にするものである。この方法により正確な年齢を求めることができるが、一方で、同じ顧客であっても誕生日の前後の購買で、集計される年代が変わってくる。二つ目の方法は、ある固定した日を基準に年齢を求めることにより、同じ顧客は必ず同じ年代に集計される。しかし長い期間(例えば10年間)のデータを使った年代別集計になると、31才の時の購買と40歳の時の購買が同じ年代に集計され問題となる。これらの二つの方法は目的に応じて使い分ければよいであろう。ここでは二つ目の方法を利用することにする。
 年代別に売上を集計することによって、どの年代層がどのように店に貢献しているかを観察することができる。数量や金額だけでなく、粗利や来店回数の属性によって集計するなど、より多面的に分析するのが一般的である。

 上図の帳票の作成においては、これまでに学習したコマンドを組み合わせることによって作成することができる。まずは、次に示す回答見ずに、各自で、入力データから、上図の帳票を作成するために、コマンドをどのように組み合わせて実行すればよいか(処理の流れ)を考えてもらいたい。

回答:処理の流れ

  1. 顧客がNULLである行を削除する
  2. 必要な項目「生年月日」「数量」「金額」を選択する(生年月日はcust.xtより結合)
  3. 2003/01/01を基準日にして年齢を求め、10才刻みに年齢を切り捨て、「年代」項目を作成する
  4. 年代が10より下、もしくは90より上は省く(この時、年代がNULLである行は省かれる)
  5. 年代別に数量、金額を合計する
  6. 必要な項目、「年代」「数量」「金額」を選択する

スクリプト

以上の説明で、年代別数量金額合計を求めるスクリプトを書く準備が整った。以下にその回答を示すが、回答を見る前に各自でチャレンジしてもらいたい。

#!/bin/bash
xtdelnul -f 顧客 -i /mnt/h00/tutorial/dat.xt |
xtcut    -f 顧客,数量,金額 |
xtjoin   -k 顧客 -m /mnt/h00/tutorial/cust.xt -f 生年月日 |
xtcal    -c 'down(age("20030101",$生年月日),10)' -a 年代 |
xtsel    -c '$年代>=10&&$年代<=90' |
xtcut    -f 年代,数量,金額 |
xtagg    -k 年代 -f数量,金額 -c sum |
xtcut    -f 年代,数量,金額 |
xtheader -l "年代別数量金額合計" -c "チュートリアル" -o age.xt

実行結果は各自で確認してもらいたい。

練習課題

本文で解説した一つ目の年齢の求め方を使って、次のようなデータを作成しよう。スクリプト名及び結果ファイル名は表に示されたものを使おう。

帳票名 スクリプト名 結果ファイル(xt) 結果ファイル(html)
年代別売上数量金額 age1.sh age1.xt age1.html
5才きざみの年代別売上数量金額 age2.sh age2.xt age2.html
4才きざみの年代別来店回数合計 age3.sh age3.xt age3.html
年代別粗利率 age4.sh age4.xt age4.html