絶対取りたいSQL(その2:演算・並び替え編)

同友館
doyukan_logo

本日もお読みいただき、ありがとうございます。
牛の歩みも千里、みずのです。

先日、ふぞろいな合格答案プロジェクトでは春セミナーを開催しました。不慣れな進行で恐縮ですが、ご参加いただいた皆様ありがとうございます。
試験の時間配分についてのご質問があり、まっつの「2次試験の解答プロセス 事例Ⅱ 再現答案使用」を紹介させて頂きました。時間配分以外にも参考になる記事だと思いますのでよろしければご覧くださいね。

セミナーに参加された方は、本日(5/29)までにアンケートにお答えいただくと、動画配信しましたパワーポイント資料をお送りさせていただきます。ご協力よろしくお願い致します。

今回参加できなかった皆さまも次の機会ご参加をお待ちしておりますね。

それでは、前回は予定を変更して「出不精による自宅学習のコツ」をお送りしたため間が空いてしまいましたが「絶対取りたいSQL(その1)」の続きです。

絶対取りたいSQL(その1)」ではデータを抽出するところまで書きました。今回は抽出したデータを計算したり、見やすく並べ替えることをテーマにお送りします。

何をするためにどんな命令文を使うのか実行したらどうなるか」を考えながら学習すると定着しやすいのではないかと思います。

それでは今回も平成25年度 第9問の表の登場です。経営情報システム 平成25年度 第9問

抽出したデータを計算する

四則演算

「単価」と「販売数量」がありますが、これを少し加工したデータがあったら良いなと思いませんか。例えば、もしも分析するとしたら「単価×販売数量」で売上金額は欲しいですよね。

そのような時は下記のように、列名を指定する箇所で代わりに計算式を書くことで計算結果を求めることができます。

例)
SELECT 商品名, 商品区分, 単価 * 販売数量 from 商品表

【結果】

「*」を使うのはExcelと同じですね。加算などもExcelと同様です。

演算子 計算方法
+ 加算
減算
* 乗算
/ 除算

抽出したデータを並び替える

ORDER BY句

降順や昇順に並び変える(Excelでいうソートをする)には。ORDER BY句を使い、並び替えたい列と昇順/降順を指定します。

昇順/降順(ASC/DESC)

ASC / DESC を指定することで昇順/降順の並び替えができます。どっちがどっちか若干分かりにくいASCとDESCは下記のように覚えてました。

  • DEの付かない方が基本DEで始まる方がその反対。(例:インフレとデフレ)
  • 並び替えの基本昇順ASC昇順(一般的に1, 2, 3……で並び替える方が多いですよね)
  • DEの付く方がその反対DESC降順

なお、ASCは省略可能です。言い換えると、ORDER BY句にASCもDESCも指定しない場合は昇順になります。

使用方法 効果
ORDER BY <列名>  指定した列で昇順に並び替え
ORDER BY <列名> ASC 指定した列で昇順に並び替え
ORDER BY <列名> DESC 指定した列で降順に並び替え

過去問の出題例(四則演算、並び替え)

平成27年度 第8問

問題

今週の商品の販売実績は下表のとおりであった。下表から売上金額を評価基準としたパレート図を作成して、来週の販売方策を検討したいと考えた。パレート図作成のため、まず売上金額の大きい順に商品を並べたデータを得るための SQL文として、最も適切なものを下記の解答群から選べ。

〔解答群〕
ア SELECT 商品番号, 商品名, 販売数 * (売価 – 仕入価格) FROM 販売実績表 ORDER BY 販売数 * 売価 ASC
イ SELECT 商品番号, 売価 – 仕入価格, 販売数 * 売価 FROM 販売実績表 ORDER BY 売価 – 仕入価格
ウ SELECT 商品名, 販売数 * (売価 – 仕入価格) FROM 販売実績表 ORDER BY 5 ASC
エ SELECT 商品名, 販売数 * (売価 – 仕入価格), 販売数 * 売価 FROM 販売実績表 ORDER BY 販売数 * 売価 DESC

解説

ポイントは「売上金額の大きい順に商品を並べ」ですね。
「大きい順」は大きいものから小さいものへ順に並べる、つまり降順なのでDESCを指定する必要があります。

DESCを指定しているのがエだけなので確定します。
アとウはASCなので不正解、イはASCもDESCも指定していない=昇順なので不正解です。

解答には直接影響しませんが、「販売数 * 売価」で売上金額を計算しています。また、「売価 – 仕入価格」で商品1単位あたりの利益を求め、販売数量をかけることで粗利益を計算しています。

なお、()で括られている場合は「絶対取りたいSQL(その1)」で解説したANDやOR、普通の計算式と同様に()内が優先されます。

エの実行結果

こうしてみると、売上金額が最も多いiiiよりも二番目のbbbの方が粗利は多かったり、fffは粗利が0というのが分かりやすくなりますね。

急きょ予定を変更した都合もあり、グループ化(HAVING)と関数(AVGやSUMなど)、表結合は、過去問の出題例のみとなりますが、学習を進めて頂ければ幸いです。

過去問の出題例(グループ化・関数)

  • 平成19年度 第6問(設問2)
  • 平成23年度 第8問

過去問の出題例(表結合)

  • 平成30年度 第4問

過去問の出題例(総合問題)

  • 平成20年度 第10問
  • 平成21年度 第10問

明日はいよいよ事例Ⅱ84点のとうへいによる試験中に考えたこと3部作の完結編です。明日に備えておさらいしたい方は下記の2本をご覧くださいませ。

 

「この記事が参考になった」と思った方はクリックをお願いします!
SNSでフォローする