Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

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

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

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2017/05/24 14:00

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

目次

対象読者

  • 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実行例を見ていきます。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

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

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2017年5月時点での登録メンバは52名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい...

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

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5