【基本情報の実務】データ抽出の組み立て──先に決めるのは「1行が何を表すか」
店舗の運営担当者から、売上データの抽出について相談が届く。
「売上を記録した表があります。『先月の売上が5,000以上だった商品を、売上が多い順に並べて一覧にしたい』のです。データベースから取り出す方針を、どう組み立てればよいか教えてください。細かい書き方より、どんな条件でどう絞るかの考え方を知りたいです」
基本情報の知識がここで力になるのは、この依頼文が2通りに読めると気づいたときだ。「先月の売上が5,000以上だった商品」——ここが1回の売上のことなのか、先月の合計のことなのかで、出てくる一覧が変わる。この記事では、そこから整理する。
まず結論:同じ文が、2つの一覧になる
| 読み方 | 出てくるもの |
|---|---|
| 1回の売上が5,000以上 | 高額な取引のあった商品 |
| 先月の合計が5,000以上 | よく売れた商品 |
500円の商品が先月20回売れたとする。合計は10,000である。
上の読み方だと、この商品は出てこない。1回の売上はどれも500だからである。
下の読み方だと、出てくる。
依頼文は、どちらとも読める。そして依頼した側は、片方しか考えていない。
ここを確かめずに作ると正しく動いているのに、欲しかったものと違う一覧が出る。いちばん気づかれにくい間違いである。
売上の一覧が欲しい場面から考えると「よく売れた商品」を知りたいことが多そうだが、推測で決めない。
「1行が何を表すか」を先に決める
この違いは、言い換えると出したい表の1行が、何を表すかの違いである。
- 1行=1回の売上——同じ商品が何行も出る
- 1行=1つの商品——商品ごとに1行だけ出る
「一覧にしたい」と言われたときは、後者を想像していることが多い。同じ商品名が何度も並ぶ表は、一覧とは呼ばれにくい。
この「1行が何を表すか」を先に決めると、あとの組み立てが全部決まる。
1行=1つの商品なら、途中で「商品ごとにまとめる」作業が入る。まとめる作業があるかないかが、いちばん大きな分かれ道である。
だから最初の質問は「同じ商品は、1行にまとめますか」でよい。専門の言葉を使わずに聞ける。
絞る場所が、2か所ある
商品ごとにまとめる場合、条件を書く場所が2つできる。
- まとめる前に絞る——「先月の分だけを対象にする」
- まとめた後に絞る——「合計が5,000以上のものを残す」
この2つは入れ替えられない。合計は、まとめないと出てこないからである。
逆に期間の絞り込みは、まとめる前にやる。先に絞ると、まとめる量が減るので速くなるし、そもそも意味が違う。
全期間でまとめてから「先月」で絞ろうとすると絞る対象が残っていない。まとめた時点で、いつの売上かは消えている。
だから順番は絞る → まとめる → 絞る → 並べるになる。
「先に絞れるものは、先に絞る」——これは速さのためだけでなく、正しさのためでもある。
並べ替えと件数まで決めておく
ここは依頼文に書かれていないので、抜けやすいところである。
①同じ数だったとき、どちらを先にするか
売上が同じ商品が2つあったとき、順番は決まっていない。取り出すたびに入れ替わることがある。
一覧を人が見るなら、これは困る。先週と順番が違うと、何か変わったのかと思う。
だから2つ目の基準を決めておく。売上が同じなら、商品名の順——それでよい。毎回同じ順になることが大事である。
②何件出すか
「一覧」と言われたときに、該当が300件あったらどうするか。
全部欲しいのか、上から20件でよいのか。これも聞いておく。
③該当が0件のとき
これも確かめておくと親切である。0件が出たときに「取り出しに失敗した」と受け取られることがある。
0件は正しい結果だと、あらかじめ伝えておく。
方針の例
売上抽出の方針(ご確認をお願いします)
先に1点、確かめさせてください
「先月の売上が5,000以上だった商品」は、2通りに読めます。
- 1回の売上が5,000以上だった商品(高額な取引があった商品)
- 先月の合計が5,000以上だった商品(よく売れた商品)
たとえば500円の商品が先月20回売れた場合、合計は10,000です。1では出てきませんが、2では出てきます。
どちらでしょうか。言い換えると「同じ商品は1行にまとめますか」というご確認です。
以下は2(合計)として書いています。
取り出す順序
- 先月の分だけに絞る(日付で絞り込み)
- 商品ごとにまとめて、売上を合計する
- 合計が5,000以上のものを残す
- 合計の多い順に並べる
1と3は、どちらも「絞る」作業ですが、場所が違います。
合計はまとめないと出てこないので、3はまとめた後にしかできません。逆に期間の絞り込みは、まとめる前にします。まとめてしまうと、いつの売上かが分からなくなるためです。
出す列
商品名、先月の合計売上、売れた回数——この3つを想定しています。回数もあったほうが、合計の中身が分かりやすいかと思います。不要でしたらお知らせください。
あと3つ、決めておきたいことがあります
- 合計が同じ商品があったとき、どちらを先に出しますか。
決めておかないと、取り出すたびに順番が入れ替わることがあります。商品名の順でよろしければ、そうします。- 何件までお出ししますか。該当が多い場合、全部か、上から20件かで変わります。
- 該当が0件だった場合——これは正しい結果です。取り出しの失敗ではありません。
「先月」の範囲について
先月の1日から末日まで、で承知しました。締め日が別にある場合はお知らせください。
いちばん上に、読み方の確認を置いた。ここが決まらないと、あとが全部変わる。
具体例(500円が20回)で示した。説明より、例のほうが速い。
「同じ商品は1行にまとめますか」と言い換えた。専門の言葉を使っていない。
「以下は2として書いています」と置いた。確認を待たずに、続きを読んでもらえる。
絞る場所が2つあることを、順序の下に説明として付けた。手順だけだと、なぜその順かが残らない。
最後の締め日は、聞かれていないが、店舗によっては変わるところである。
作り方の手順
- 依頼文が2通りに読めないかを見る。
- 1行が何を表すかを先に決める。
- 「同じものは1行にまとめますか」と、専門の言葉なしで聞く。
- 具体例で違いを示す。説明より速い。
- 片方を仮に置いて、続きを書く。確認待ちで止めない。
- 絞る/まとめる/絞る/並べるの順を書く。
- 先に絞れるものは、先に絞る。速さと正しさの両方。
- 同点のときの順序を決める。
- 件数を決める。
- 0件は正しい結果だと伝えておく。
この場面で効いている基本情報の知識
- 抽出の組み立て——絞る、まとめる、絞る、並べるの順
- 集計——まとめると、まとめる前の情報は消える
- 条件の位置——集計の前に書くか、後に書くかで意味が変わる
- 並べ替えの安定——同点の順序を決めないと、毎回変わりうる
知識そのものより、依頼文が2通りに読めることに気づけることが、この場面で効いている。
抽出で外したくないポイント
- 「売上が5,000以上」は2通りに読める。
- 1回の売上か、期間の合計かで、出る一覧が変わる。
- 正しく動いているのに、違うものが出る。気づかれにくい。
- 1行が何を表すかを先に決める。
- 「1行にまとめますか」と、専門の言葉なしで聞く。
- 絞る場所は2か所ある。まとめる前と、後。
- 合計への条件は、まとめた後にしか書けない。
- 期間の絞り込みは、まとめる前。あとでは絞れない。
- 同点の順序を決める。毎回同じ順にする。
- 件数と、0件のときを先に決めておく。