技術

SQLを流してデータベース操作!正しい書き方と考え方で データ分析

データドリブンと言われるこの時代、意思決定や戦略策定にデータを活用することがビジネスの現場では当たり前になってきているように思います。
これまでは、感覚や直感で「なんとなく○○かな?」というような仮説ベースでの意思決定がされきました。
しかしここ数年は、さまざまなソースからデータ(顧客の行動データ、売上データ、マーケティングデータ、ウェブ解析データ)を収集し、統計解析、データマイニング、機械学習などの技術を使用して、データのパターンやトレンドを見つけ出します。時には思いも寄らない結果を得ることがあります。
これより、事実に基づいた合理的なジャッジが可能になり、その結果をさらにモニタリングして評価することで、フィードバックループを形成し、次回の意思決定や戦略策定に活かすことができるのです。

“データ”を得るスタートラインは、データベースをSQLで操作することです。

この記事では、SQLを初歩的なレベルから解説し、実際に手を動かしながらデータ分析まで行います。

環境は以下の通りです。
MacBook Pro 2021 macOS12.6.8
A5:SQL Mk2

執筆者

macOSでPostgresSQLなどのデータベースにSQLを流して操作、データを集計・分析するまでを解説します!

SQLとは?

SQL(Structured Query Language)とは、データベースとの対話を可能にする標準的なプログラミング言語です。SQLを学習する上で必要な知識はエクセルやスプレッドシートなどで使うファンクション関数ですが、この記事では割愛し、ある程度データ集計を理解していることが前提です。

A5:SQL Mk2のインストール

Macのターミナルでコマンドを叩いてもいいのですが、Windows用のフリーのSQLクライアントであるA5:SQL Mk2を使います。
データベース接続やSQLエディタ、実行結果などが非常に見やすくER図も作成できる便利なGUIツールなので、私はとても気に入って使っています。

しかし、A5:SQL Mk2はWindows用のアプリですので、Macで動作させるためにはひと工夫が必要です。

wineのインストール

A5:SQL Mk2をインストールする前に、Mac上でWindows アプリケーションを実行できるwineを使います。

Homebrewでwineをインストール

brew install --cask --no-quarantine gcenx/wine/wine-crossover

Wine ライブラリのインストール

日本語だと文字化けするので、下記のコマンドを実行します。

同じくHomebrewでライブラリをインストール

brew install winetricks
winetricks fakejapanese_ipamona

A5:SQL Mk2をダウンロード

これでMac上でA5:SQL Mk2を動かせる準備ができたので、A5:SQL Mk2をダウンロードしてきます。

https://a5m2.mmatsubara.com

ダウンロードしたら、exeファイルを開きます。
exeファイルがワインのアイコンに変わってるはずです。

データベース接続

A5:SLQ Mk2の起動ができたらレジストリからデータベース接続に続きます。
接続ができたら、”Query-1″のSQLエディタにSQLを記述して、スピードボタンをクリックしてSQLを実行できます。

SQLを記述

例えば、スーパーマーケットの商品リストのテーブルがあるとします。

IDProductNameCategoryPriceStock
1AppleFruits400100
2BananaFruits300150
3CarrotVegetables100200
4DetergentHousehold35050
5EggsDairy25075
Products

SELECTとFROM

まずは、SQLで最も基本的なクエリです。FROMでテーブルを選び、SELECTでカラムを選択します。*にすると全てのカラムが取得できます。

-- 全商品を選択
SELECT * FROM Products;

SQLを流すと、商品リスト全体が取得することができると思います。
コメントアウトは — を使います。

WHERE

次に、特定の条件に基づいてデータをフィルタリングする場合はWHERE句を使います。例えば、カテゴリが”Fruits”の商品を選択します。

-- カテゴリが"Fruits"の商品を選択
SELECT * FROM Products
WHERE Category = 'Fruits';
IDProductNameCategoryPriceStock
1AppleFruits400100
2BananaFruits300150
Products

ORDER BY

データを特定の列に基づいてソートしたい場合はORDER BY句を使います。ここでは価格が低い順に商品をソートしてみます。

-- 価格が低い順に商品をソート
SELECT * FROM Products
ORDER BY Price ASC;
IDProductNameCategoryPriceStock
3CarrotVegetables100200
2BananaFruits300150
1AppleFruits400100
5EggsDairy25075
4DetergentHousehold35050
Products

GROUP BY

特定の列を基にデータをグループ化して集計します。集計関数とGROUP BY句を使います。ここでは、カテゴリごとの平均価格を計算してみます。

-- カテゴリごとの平均価格を計算
SELECT Category, AVG(Price) AS AveragePrice
FROM Products
GROUP BY Category;
CategoryAveragePrice
Fruits350
Vegetables100
Household350
Dairy250
Products

AS

ASは、列やテーブルに一時的な別名(エイリアス)を付けるために使用されます。エイリアスは、クエリの可読性を向上させたり、複雑なクエリを簡潔にするために役立ちます。

集計関数

集計関数は、データの集計や要約を行うために使用されます。SQLの代表的な集計関数についてまとめます。

COUNT


COUNT関数は、指定された条件に一致する行の数を返します。

-- 商品テーブルにおける商品の総数をカウント
SELECT COUNT(*) AS TotalProducts
FROM Products;
TotalProducts
5

SUM


SUM関数は、数値列の合計を計算します。

-- 全商品の在庫の合計を計算
SELECT SUM(Stock) AS TotalStock
FROM Products;
TotalStock
575

AVG


AVG関数は、数値列の平均値を計算します。

-- 全商品の平均価格を計算
SELECT AVG(Price) AS AveragePrice
FROM Products;
AveragePrice
280

MAX


MAX関数は、指定された列の最大値を返します。

-- 価格が最も高い商品の価格を取得
SELECT MAX(Price) AS HighestPrice
FROM Products;
HighestPrice
400

MIN


MIN関数は、指定された列の最小値を返します。

-- 価格が最も低い商品の価格を取得
SELECT MIN(Price) AS LowestPrice
FROM Products;
LowestPrice
100

最後に

今回は、SQLの基本構文から集計関数まで、スーパーマーケットの商品リストを例にして詳しく解説しました。SQLはデータベース管理やデータ分析において非常に強力なツールです。その基本を理解することで、より効率的にデータを操作し、複雑なデータセットを効果的に管理し、ビジネスインサイトを得るための強力な基盤が築けるでしょう。

お読みいただき、ありがとうございました!