基本情報技術者の実務クエスト

【基本情報の実務】データ抽出の組み立て──先に決めるのは「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行にまとめますか」でよい。専門の言葉を使わずに聞ける

絞る場所が、2か所ある

商品ごとにまとめる場合、条件を書く場所が2つできる

この2つは入れ替えられない合計は、まとめないと出てこないからである。

逆に期間の絞り込みは、まとめる前にやる先に絞ると、まとめる量が減るので速くなるし、そもそも意味が違う

全期間でまとめてから「先月」で絞ろうとすると絞る対象が残っていないまとめた時点で、いつの売上かは消えている

だから順番は絞る → まとめる → 絞る → 並べるになる。

「先に絞れるものは、先に絞る」——これは速さのためだけでなく、正しさのためでもある。

並べ替えと件数まで決めておく

ここは依頼文に書かれていないので、抜けやすいところである。

①同じ数だったとき、どちらを先にするか

売上が同じ商品が2つあったとき、順番は決まっていない取り出すたびに入れ替わることがある

一覧を人が見るなら、これは困る。先週と順番が違うと、何か変わったのかと思う

だから2つ目の基準を決めておく。売上が同じなら、商品名の順——それでよい。毎回同じ順になることが大事である。

②何件出すか

「一覧」と言われたときに、該当が300件あったらどうするか

全部欲しいのか、上から20件でよいのか。これも聞いておく

③該当が0件のとき

これも確かめておくと親切である。0件が出たときに「取り出しに失敗した」と受け取られることがある。

0件は正しい結果だと、あらかじめ伝えておく。

方針の例

売上抽出の方針(ご確認をお願いします)

先に1点、確かめさせてください

「先月の売上が5,000以上だった商品」は、2通りに読めます。

  1. 1回の売上が5,000以上だった商品(高額な取引があった商品)
  2. 先月の合計が5,000以上だった商品(よく売れた商品)

たとえば500円の商品が先月20回売れた場合、合計は10,000です。1では出てきませんが、2では出てきます。

どちらでしょうか。言い換えると「同じ商品は1行にまとめますか」というご確認です。

以下は2(合計)として書いています。

取り出す順序

  1. 先月の分だけに絞る(日付で絞り込み)
  2. 商品ごとにまとめて、売上を合計する
  3. 合計が5,000以上のものを残す
  4. 合計の多い順に並べる

1と3は、どちらも「絞る」作業ですが、場所が違います。

合計はまとめないと出てこないので、3はまとめた後にしかできません。逆に期間の絞り込みは、まとめる前にします。まとめてしまうと、いつの売上かが分からなくなるためです。

出す列

商品名、先月の合計売上、売れた回数——この3つを想定しています。回数もあったほうが、合計の中身が分かりやすいかと思います。不要でしたらお知らせください。

あと3つ、決めておきたいことがあります

  1. 合計が同じ商品があったとき、どちらを先に出しますか。
    決めておかないと、取り出すたびに順番が入れ替わることがあります。商品名の順でよろしければ、そうします。
  2. 何件までお出ししますか。該当が多い場合、全部か、上から20件かで変わります。
  3. 該当が0件だった場合——これは正しい結果です。取り出しの失敗ではありません。

「先月」の範囲について

先月の1日から末日まで、で承知しました。締め日が別にある場合はお知らせください。

いちばん上に、読み方の確認を置いたここが決まらないと、あとが全部変わる

具体例(500円が20回)で示した説明より、例のほうが速い

「同じ商品は1行にまとめますか」と言い換えた。専門の言葉を使っていない

「以下は2として書いています」と置いた。確認を待たずに、続きを読んでもらえる

絞る場所が2つあることを、順序の下に説明として付けた。手順だけだと、なぜその順かが残らない

最後の締め日は、聞かれていないが、店舗によっては変わるところである。

作り方の手順

  1. 依頼文が2通りに読めないかを見る。
  2. 1行が何を表すかを先に決める。
  3. 「同じものは1行にまとめますか」と、専門の言葉なしで聞く。
  4. 具体例で違いを示す。説明より速い。
  5. 片方を仮に置いて、続きを書く。確認待ちで止めない。
  6. 絞る/まとめる/絞る/並べるの順を書く。
  7. 先に絞れるものは、先に絞る。速さと正しさの両方。
  8. 同点のときの順序を決める。
  9. 件数を決める。
  10. 0件は正しい結果だと伝えておく。

この場面で効いている基本情報の知識

知識そのものより、依頼文が2通りに読めることに気づけることが、この場面で効いている。

抽出で外したくないポイント

  1. 「売上が5,000以上」は2通りに読める
  2. 1回の売上か、期間の合計かで、出る一覧が変わる。
  3. 正しく動いているのに、違うものが出る。気づかれにくい。
  4. 1行が何を表すかを先に決める。
  5. 「1行にまとめますか」と、専門の言葉なしで聞く。
  6. 絞る場所は2か所ある。まとめる前と、後。
  7. 合計への条件は、まとめた後にしか書けない。
  8. 期間の絞り込みは、まとめる前。あとでは絞れない。
  9. 同点の順序を決める。毎回同じ順にする。
  10. 件数と、0件のときを先に決めておく。
この記事は抽出方針の組み立て方を整理したものです。実際の書き方は、お使いのデータベースや表の作りによって異なります。

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る
架空の実務場面をもとにした学習用の解説記事です。実在の会社・物件・取引ではありません。制度は改正されることがあるため、受験年度の最新情報もあわせてご確認ください。