ISBN: 978-4-8026-1226-5
SQLデータ分析・活用入門 データサイエンスの扉を開くための技術
WINGSプロジェクト 西潤史郎 著
サポート終了
| 著者 | WINGSプロジェクト 西潤史郎 |
|---|---|
| 監修 | 山田祥寛 |
| 出版社 | ソシム |
| 価格 | 2,600円(税別) |
| 判形 | A5版・2色 |
| ページ数 | 400ページ |
| 発売日 | 2019年9月12日 |
| 対象レベル | 初級 |
欲しいデータは自分で見つける!
本書は「データ分析」に特化したSQLの入門書です。広く浅くの超入門ではありません。データ分析の現場で生き抜くための技術とデータを価値に変えるための思考。基礎から実践まで本腰を入れて学びたい人に向けた本格的な内容となっています。
更新履歴
- 正誤訂正:2020年6月22日 更新
目次
- 第1部 SQLによるデータ分析の基礎
- 第1章 SQLとデータ分析の世界
- 1.1 SQLによるデータ分析とは
- データ分析ニーズの広がり
- データとデータベース
- リレーショナルデータベース管理システムとSQL
- データ分析の流れ
- 1.2 分析システムの広がりとSQL
- 基幹システムと分析システムの違い
- 分析システムのSQLとデータベースの特徴
- 1.3 なぜ分析 SQLのスキルが必要なのか
- データベースにある一次データを取得する
- SQLは分析担当者とエンジニアにとっての「英語」
- SQLは標準規格
- 第2章 データ分析環境を整える
- 2.1 データ分析環境の準備
- データ分析環境の例
- なければ作る、分析システム
- 分析の対象となるデータ
- 2.2 アドホック分析とレポーティングの環境
- アドホック分析とレポーティングについて
- アドホック分析とツール
- レポーティングのツール
- Redash
- Superset
- 2.3 その他の分析ツール
- スクリプト言語
- R
- Python
- 対話型環境
- BIツール
- Tableau
- 2.4 SQLクライアントをデータ分析で活用する
- SQL Workbench/Jとは
- 基本的な SQLの実行
- CSVファイルでダウンロードする
- SQLのクエリ文を整形する
- Workspaceで SQL 実行プロセスを保存する
- 第3章 データを「分ける」「数える」が分析の基本
- 3.1 SELECT 文でデータを分析するための基本
- 分析は「分ける」「数える」「モデル化する」
- データを活かす、SQLによるアドホック分析
- SELECT文の構造
- SELECT句で列データを絞る
- 集約関数でデータを集計する
- COUNT関数による集計
- その他の集約関数
- AVG関数で平均値を集計する
- 3.2 WHEREでデータを絞りこむ
- WHERE句によるデータの絞りこみの基本
- WHERE句におけるさまざまな条件の記述
- 複数の条件を設定するIN
- LIKEによる柔軟なデータ指定
- 3.3 GROUP BYでデータをグループ化する
- ○○ごとに分ける
- GROUP BY句と集約関数でグループごとの集計をする
- COUNT関数以外の集約関数とGROUP BYを組み合わせる
- 3.4 HAVING句でデータをさらに絞りこむ
- 集約関数の集計結果をさらに絞りこむ
- HAVING句とWHERE句の使い分け
- 3.5 ORDER BY句/LIMIT句でデータをさらに整える
- ORDER BY でデータを並べ替える
- GROUP BYとORDER BYを組み合わせる
- LIMIT句で取得するデータを絞る
- 第4章 分析を効率化するSQLによる前処理
- 4.1 異なるデータ型への変換
- CASE式によるラベルの変換
- CASE式でカテゴリをまとめる
- CASTによる変換
- 欠損値をデフォルト値に置き換える
- 4.2 数値のデータ加工
- 数値の表記と四則演算
- 1レコード内の数値データ同士を比較する
- 比率を求める
- 分母が0の場合のエラーへの対応
- 4.3 日付・時間のデータ加工
- 現在の日付/時間を取得する
- 指定の日付/時間を取得する
- 年・月・日・時・分・秒など特定データを取得する
- 生年月日から年齢を計算する
- 指定の時間の加減を行う
- 4.4 文字列のデータ加工
- 指定した数の文字列を取り出すSUBSTRING関数
- 文字列の分割
- URL形式の文字列からドメイン名を取り出す
- CONCATによる文字列の連結
- 第5章 データをさらに活用するためのテクニック
- 5.1 サブクエリを使いこなす
- サブクエリとは
- 階層を増やしたサブクエリ
- サブクエリのエイリアス
- WITH句でサブクエリを見やすく
- スカラサブクエリでスカラ値を扱う
- HAVING句でスカラサブクエリを使う
- 比較演算の中でのサブクエリの注意点
- 相関サブクエリでサブクエリ外のデータを参照する
- 5.2 INとEXISTSによるデータの調査
- IN述語とサブクエリを組み合わせる
- EXISTS述語でデータを検査する
- 5.3 SQLで基本統計量を求める
- HAVING句で最頻値を求める
- HAVING句で中央値を求める
- SQLで分位数/分散
- 5.4 ログデータひとつでできるユーザー分析
- アクション数の推移
- ユニークユーザー数の推移
- 新規ユーザー数の推移
- サービス継続期間の把握
- アクション数が3回以上のユーザーのリスト
- 直近7日間でアクション数が3回以上のユーザーリスト
- 第6章 複数のテーブルを扱うJOINとUNION
- 6.1 テーブルの結合とテーブルの正規化
- テーブルの正規化
- 結合によりテーブルを横につなげる
- 6.2 JOIN句によるテーブルの結合
- JOIN句でテーブルを内部結合する
- SELECT句で結合したテーブル名を明示する
- LEFT JOINでテーブルを外部結合する
- FULL JOINで完全外部結合する
- 6.3 特殊な結合
- 同じテーブル同士を結合する自己結合
- テーブルのすべての行の組み合わせを得るクロス結合
- CROSS JOINで合計のカラムを付ける
- 6.4 UNIONで複数のテーブルを扱う
- UNIONでテーブルを縦につなげる
- UNIONで合計の行を付ける
- UNIONで疑似テーブルを作成する
- 第7章 分析SQLの主役「ウィンドウ関数」徹底入門
- 7.1 ウィンドウ関数の概要
- ウィンドウ関数とは
- ウィンドウ関数でランキングを求める
- ウィンドウ関数の構文
- ウィンドウを明記する、別の表記方法
- 7.2 ウィンドウの範囲と順序を指定するPARTITION BYとORDER BY
- PARTITION BY でグループ分け
- PARTITION BYを指定しない場合のウィンドウ
- ORDER BYで並べ替える
- 7.3 ウィンドウ関数に変身する関数と専用の関数
- 順序を扱うウィンドウ関数専用の関数
- 集約関数からウィンドウ関数に変身する関数
- 7.4 フレーム句を使いこなし分析SQLの達人になる
- フレーム句の構文とフレームのイメージ
- フレームで移動平均を求める
- フレームで直近の日付を求める
- RANGEによる値単位での行指定
- 第2部 SQLによるデータ分析の実践
- 第8章 SQLで小さな分析を積み重ねる
- 8.1 小さな分析を積み重ねるアドホック分析
- データと対話し、全体から部分へ分析を進める
- データを分けるのは「時間ごと」「グループごと」
- 8.2 ファクトデータを活かす時系列分析
- 時系列分析とは
- データの確認
- ウィンドウ関数で簡単、SQLで時系列分析
- 8.3 グループ分けを組み合わせるクロス集計
- クロス集計とは
- データの確認
- 性別・地域ごとのユーザー数集計
- 「地域」に連番を付与する
- CASE式でテーブルを縦持ちから横持ちに変換する
- 8.4 実践アドホック分析1 - 全体から部分へ分析を進める
- モデルのイメージ
- 全体の把握
- GROUP BY句でグループを分ける
- ウィンドウ関数によるランク付け
- CASE式によるランク付け
- クロス集計で表を整える
- 8.5 実践アドホック分析2 - 集計と深掘り
- 指標を追加し、3指標のランクを求める
- 3指標でランクを求める
- ランク値ごとに集計する
- 集計値を求める
- 第9章 長いSQLを読み解く
- 9.1 データ分析でよくある長いSQLの読み方
- 内側のSELECT文から読む
- SELECT文は句の処理順に読む
- 9.2 統計量「四分位数」を求めるSQLを読み解く
- 四分位数とSQL全体像
- SQL全体像と読み解き順序
- ランキングを算出するための相関サブクエリ
- ランキングを算出するクエリ
- ランキングをもとに四分位に振り分ける
- 9.3 「バスケット分析」のSQLを読み解く
- バスケット分析について
- データとSQLの確認
- SQL全体像と読み解き順序
- 1つめの文「商品の組み合わせと購入回数」
- 2つめの文「商品ごとの購入回数」
- 3つめの文「商品が同時に購入される頻度を算出する」
- 9.4 「ユーザーの利用機能分析」のSQLを読み解く
- 「ユーザーの利用機能分析」とは
- データとSQLの確認
- SQL全体像と読み解き順序
- 1番めの文「ユーザーごとのアクションありなし」
- 2番め~9番めの文「アクション組み合わせの集計」
- 10番目の文「データ整形」
- [補足]DBMS 特有関数がある場合
- 9.5 [番外編]既存のSQLをよりよく改善する
- ウィンドウ関数 NTILEで簡単に4グループ分けを実現する
- WITH句でサブクエリを整理
- ランキングをウィンドウ関数により求める
- PERCENT_RANK 関数とCUME_DIST 関数によるランキング
- スカラサブクエリ繰り返し表記の改善
- SQLの改善結果
- 第10章 データ分析が価値を生みだすために
- 10.1 データ分析が成果を出すために必要なこと
- モデルとは
- モデルはどう作成するのか
- 「式」はモデルの代表的な形
- データ分析はプロセスであり成果物ではない
- 意志決定者とデータ分析者は分ける
- 国家の意思決定から発展した「インテリジェンス」
- 意思決定者とデータ分析者の壁
- ビジョンとスキルで壁を越える
- データサイエンスの実践に求められるスキル
- データサイエンスのタスク
- チームとしてのデータサイエンティスト
- 社内SQL 勉強会のすすめ
- 10.2 さらにデータサイエンスのスキルを身につけるための参考書籍
- SQL関連
- エンジニアリング関連
- データサイエンス関連
- ビジネス関連
- 10.3 結びにかえて
- 付録
- A.1 SQLクライアント「SQL Workbench/J」の導入方法
- SQL Workbench/Jのインストール手順
- データベース接続設定
- A.2 ダッシュボードツール「Redash」の導入方法と可視化手順
- Dockerのインストール
- DockerでRedash環境を構築する
- データソースの設定方法
- 日付フォーマット設定
- SQLクエリを実行してみる
- 数値表示のグラフ作成
- 円グラフ/棒グラフの作成
- 2つグラフの同時表示
- ダッシュボードを作る
- サブクエリだけ実行できる「選択実行」
- クエリ結果を CSVファイルなどでダウンロード
- アラートの設定
- まとめ
正誤表
| 該当頁 | 該当箇所 | 修正刷 |
|---|---|---|
| 訂正箇所 | 訂正事項 | 更新日 |
| p.124 | 本文 上から8行目 | 2刷 |
| リスト 4-2-6 に示すコート゛例て゛は、1 日分(2017-04-01)のテ゛ータて゛各広告の CTR(Click Through Rate)を計算します。 | リスト 4-2-6 に示すコート゛例て゛は、各広告の CTR(Click Through Rate)を計算します。 | 2019/10/04 |
| p.125 | 本文 下から6行目 | 2刷 |
| 0 除算エラー(分母が 0 になる エラー)となってしまいます。 | 0 除算エラー(分母が0になるエラー)となります(ただしMySQLの場合は挙動が特殊でエラーとはならず、NULLを返します)。 | 2019/10/04 |
| p.125 | リスト4-2-6 | 2刷 |
| WHERE dt = ’2017-04-01 | (カットしてください) | 2019/10/04 |
| p.131 | 表4-3-5 1行目と3行目のbirth_date列 | 2刷 |
| 1行目3行目とも 1996-02-29 | 1行目 1996-02-28 3行目 1996-03-01 |
2020/06/22 |
| p.182 | リスト5-4-6 12行目 | 2刷 |
| DATEDIFF()>=7 | DATEDIFF()<=7 | 2020/06/22 |
FAQ
現在、FAQはありません。
ダウンロード
お問い合わせ
書籍に関するご質問や誤りのご報告、ご意見・ご感想などをお寄せください。
お問い合わせの前にFAQ・正誤表をご確認ください。すでに掲載済みの内容については個別回答が難しい場合があります。