SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ビジネスデータ解析のためのSQL入門

SQLで基本のデータ解析に挑戦する

ビジネスデータ解析のためのSQL入門 第1回


  • X ポスト
  • このエントリーをはてなブックマークに追加

 本連載ではビジネスデータ解析でデータベースから情報を取得して活用する必要がある方を対象に、「クロス集計」「デシル分析」「バスケット分析」「時系列分析」といったビジネスデータ解析でよく使われる実践的なSQL例を示し、解説します。今回は、その中からクロス集計とデシル分析を取り上げます。

  • X ポスト
  • このエントリーをはてなブックマークに追加

対象読者

  • SQLの基本は理解しているが、より実践的な分析に取り組みたい方

サンプルの動作確認環境

  • PostgreSQL 9.6
  • CentOS 6.7

分析のためのSQLの特徴

 データ解析関連の話題でSQLを耳にすることが多くなっています。理由はデータを活用しようとした際、データがデータベースに格納されている場合が多く、SQLが必要となるからです。

 SQLは枯れた技術・古い技術といった印象がありますが、データ活用の面では汎用性が高い標準技術です。ビジネスの現場でも、経営判断や定期レポートなどのデータを可視化するために利用されるBIツールでSQLをサポートするものが多くなっています。

 本連載では特にデータ解析の現場で必要となるSQLに関する技術について、解説を進めていきます。

環境準備

 本稿ではDBMSにPostgreSQLを用い、バージョン9.6で動作確認しています。導入方法は割愛するので、必要な場合はPostgreSQLのオフィシャルサイトを参考にしてください。

 本稿で用いるサンプルデータとして、以下のテーブルを準備しました。購買履歴の場合、通常は商品名や商品カテゴリを持たせずに商品詳細の別テーブルを商品IDで参照することが望ましいですが、ここではシンプルにするため商品名などをそのまま記載しています。

 サンプルデータを作成するためのSQLは以下の通りです。

リスト1 顧客データ テーブルの作成(create_table_customer.sql)
create table customer(
user_id char(008),    (ユーザーコード)
age int,    (年代)
sex char(008),    (性別)
place char(016)    (地域)
);
リスト2 顧客データ サンプルデータの挿入(insert_customer.sql)
insert into customer(user_id,age,sex,place) values
('UID0001',45,'M','Osaka'),
('UID0002',30,'M','Fukuoka'),
('UID0003',20,'M','Tokyo'),
('UID0004',25,'W','Tokyo'),
('UID0005',35,'W','Tokyo'),
('UID0006',40,'W','Osaka'),
('UID0007',30,'M','Osaka'),
('UID0008',25,'W','Tokyo'),
('UID0009',30,'M','Tokyo'),
('UID0010',25,'W','Fukuoka'),
('UID0011',20,'W','Tokyo'),
('UID0012',30,'W','Fukuoka')
;
リスト3 購買履歴 テーブルの作成(create_table_sales_history.sql)
create table sales_history(
item_name char(16),    (商品名)
item_category char(16),    (商品カテゴリ)
date date,    (購買日)
place char(8),    (購買地域・場所)
user_id char(8),    (ユーザーコード)
price int    (料金)
);
リスト4 購買履歴 データの挿入(insert_sales_history.sql)
insert into sales_history values
('zakka','zakka','2017/3/22','EC','UID0004','980'),
('zakka','zakka','2017/3/22','EC','UID0003','780'),
('zakka','zakka','2017/3/22','EC','UID0009','980'),
('zakka','zakka','2017/3/22','EC','UID0002','780'),
('food','food','2017/3/22','EC','UID0007','250'),
('food','food','2017/3/22','EC','UID0008','250'),
('food','food','2017/3/30','EC','UID0010','200'),
('food','food','2017/3/30','EC','UID0011','350'),
('food','food','2017/4/1','EC','UID0012','250'),
('food','food','2017/4/1','EC','UID0005','250'),
('food','food','2017/4/1','EC','UID0006','250'),
('food','food','2017/4/1','EC','UID0004','250'),
('food','food','2017/4/1','EC','UID0001','250'),
('food','food','2017/4/1','EC','UID0002','250'),
('zakka','zakka','2017/4/10','EC','UID0003','980'),
('zakka','zakka','2017/4/10','EC','UID0004','780')
;

 データベースの準備ができたので、ここからはデータ解析におけるSQL実行例を見ていきます。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
クロス集計

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ビジネスデータ解析のためのSQL入門連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 西 潤史郎(ニシ ジュンシロウ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10154 2017/08/02 12:17

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング