EXCELユーザーがSQLに挑む!新たな分析ツールで業務効率化を実現
こんにちは!今日はみんなが仕事に役立てられる、データ分析のためのSQLの基本について、30分で学んでいきましょう。
SQL(Structured Query Language)は、データベースから情報を抽出するための言語です。でも心配ない、皆さんが普段触れているExcelやWordの知識があれば、SQLも楽しく学べますよ!
SQLの構造と基本的なコマンド
まずはSQLの基本的なコマンドについて学んでいきましょう。
1:SELECTとFROM
SELECTとFROMはSQLの基本です。SELECTで何を見たいか、FROMでどこから見たいかを指定します。
例:
SELECT
*
FROM
Employees;
2:WHERE
WHEREを使用すると、特定の条件に一致するデータだけを取得できます。
例:
SELECT
*
FROM
Employees
--年齢30歳以上
WHERE
Age > 30;
3:ORDER BY
ORDER BYを使用すると、指定したカラムの値に基づいて結果を並べ替えることができます。
例:
SELECT
*
FROM
Employees
--年齢が若い順
ORDER BY
Age ASC;
4:LIMIT
LIMITを使用すると、取得するデータの件数を制限できます。
例:
SELECT
*
FROM
Employees
ORDER BY
Age ASC
--10個表示
LIMIT 10;
5:GROUP BY
例:
SELECT
Category, COUNT(*)
FROM
Products
--カテゴリーでグルーピング
GROUP BY
Category;
このコードは、各カテゴリごとの商品数をカウントします。
6:HAVING
例:
SELECT
Category, COUNT(*)
FROM
Products
GROUP BY
Category
--商品数10を超える
HAVING
COUNT(*) > 10;
このコードは、商品数が10を超えるカテゴリのみを取得します。
SQLの実行順序
SQLは以下の順序で実行されます:
FROM
JOIN
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
LIMIT
この順序を理解しておくと、より複雑なクエリを書くときに役立ちます。
データの結合: JOIN
テーブル間の関連性を表現するためにJOINを使用します。INNER JOIN、LEFT JOIN、RIGHT JOINがありますが、データ分析でよく使われるのはINNER JOINとLEFT JOINです。
例:
SELECT
*
FROM
Orders
--横に結合
INNER JOIN Customers
ON Orders.CustomerID = Customers.CustomerID;
データの統合: UNION
例:
SELECT
Category
FROM
Products
--縦に結合
UNION
SELECT
Category
FROM
Categories;
このコードは、ProductsテーブルとCategoriesテーブルのCategoryカラムの値を結合します。
条件分岐: CASE
例:
SELECT
Category,
--範囲指定
CASE
WHEN Price > 100 THEN 'Expensive'
WHEN Price <= 100 THEN 'Cheap'
ELSE 'Unknown'
END AS PriceRange
FROM
Products;
このコードは、商品の価格範囲を「高価(Expensive)」と「安価(Cheap)」に分け、それぞれの商品がどの範囲に属するかを示します。
クエリ内のクエリ: サブクエリ
例:
SELECT
*
FROM
Employees
WHERE Salary >
(
SELECT
AVG(Salary)
FROM
Employees
)
;
このコードは、社員の平均給与よりも高い給与をもらっている社員の情報を取得します。
一時的なビュー: WITH
例:
WITH Sales_CTE (SalesPersonID, NumberOfOrders) AS
(
SELECT SalesPersonID, COUNT(OrderID)
FROM SalesOrderHeader
GROUP BY SalesPersonID
)
SELECT
E.EmployeeID, E.FirstName, E.LastName, S.NumberOfOrders
FROM
Employee AS E
JOIN Sales_CTE AS S
ON E.EmployeeID = S.SalesPersonID
ORDER BY
S.NumberOfOrders DESC;
このコードは、各営業員がどれだけの注文を処理したかをランキングしています。ここで、Sales_CTEは一時的なビューで、主要なクエリで利用しています。
WITH句は、長くて複雑なSQLクエリをより管理しやすく、読みやすいものにするのに役立ちます。複数の場所で同じサブクエリを使用する場合や、クエリの複雑さを抑えるためにも使用されます。
それでは、Happy coding!
※参考文献
・データ分析力を高める ビジネスパーソンのためのSQL入門
・Written with ChatGPT