前回はSQLの基本的な操作について説明しました。今回は、データを理解するためのSQLの技術、関数、グループ化、集計、およびデータ結合について説明します。
前提情報
前提のテーブルとデータは下記の通りになります。
SQLfiddleというサイトで確認できます。
http://sqlfiddle.com/
左側でテーブルを作成してデータを投入、右側でデータを抽出するためのSELECT文を入れることでデータを出すことができます。下記の画像はOrdersテーブルの全クエリのデータを抽出した結果の画像です。
CREATE TABLE Orders ( order_id INT, user_id INT, product_id INT, quantity INT, order_date DATE ); CREATE TABLE Users ( user_id INT, user_name VARCHAR(255), birth_date DATE, prefecture VARCHAR(255) ); CREATE TABLE Products ( product_id INT, product_name VARCHAR(255), price DECIMAL(10,2), rating DECIMAL(2,1) ); INSERT INTO Orders (order_id, user_id, product_id, quantity, order_date) VALUES (1, 1, 1, 2, '2023-01-10'), (2, 2, 1, 1, '2023-01-15'), (3, 1, 2, 1, '2023-01-20'), (4, 3, 3, 5, '2023-01-25'), (5, 2, 2, 3, '2023-02-01'), (6, 1, 3, 2, '2023-02-10'), (7, 3, 1, 4, '2023-02-15'), (8, 2, 3, 1, '2023-02-20'), (9, 1, 1, 1, '2023-03-01'), (10, 3, 2, 2, '2023-03-10'); INSERT INTO Users (user_id, user_name, birth_date, prefecture) VALUES (1, 'Tanaka', '1985-03-12', 'Tokyo'), (2, 'Suzuki', '1990-07-25', 'Osaka'), (3, 'Sato', '1987-11-30', 'Hokkaido'); INSERT INTO Products (product_id, product_name, price, rating) VALUES (1, 'Apple', 100, 4.5), (2, 'Orange', 50, 4.2), (3, 'Banana', 30, 4.7);
関数(COUNT、SUMなど)
SQLには、集計関数として知られる様々な関数があります。これらは、テーブル内の特定の列の値に対して操作を行います。以下に、よく使用される集計関数の一部を示します。
- COUNT(): 特定の列の値の数を数えます。
- SUM(): 特定の列の合計を計算します。
- AVG(): 特定の列の平均を計算します。
- MIN(): 特定の列の最小値を返します。
- MAX(): 特定の列の最大値を返します。
例えば、注文データのテーブル(Orders)から、全注文の合計数量を取得するには、以下のようにします。
SELECT SUM(quantity)
FROM Orders;
GROUP BY
集計関数と一緒に、GROUP BY句を使用することで、特定の列の値に基づいてデータをグループ化し、それぞれのグループに対して集計を行うことができます。
例えば、各製品に対する総注文数量を取得するには、以下のようにします。
SELECT product_id, SUM(quantity)
FROM Orders
GROUP BY product_id;
HAVING
HAVING句は、GROUP BY句で作成されたグループに対してフィルタリングを行います。WHERE句が行のフィルタリングを行うのに対して、HAVING句はグループのフィルタリングを行います。
例えば、合計注文数量が8以上の製品のIDを取得するには、以下のようにします。
SELECT product_id, SUM(quantity)
FROM Orders
GROUP BY product_id
HAVING SUM(quantity) >= 8;
JOIN
テーブルを結合することで、複数のテーブルからデータを一度に取得することができます。JOIN句を使用してこれを行います。
例えば、各注文について、注文の詳細情報とそれに関連するユーザーの情報を一緒に取得するには、以下のようにします。
SELECT Orders.order_id, Users.user_name, Orders.product_id, Orders.quantity
FROM Orders
JOIN Users ON Orders.user_id = Users.user_id;
関数、グループ化、集計、およびデータ結合を利用することで、データをより深く理解し、価値ある洞察を得ることができます。
データ分析でお困りの企業様の課題解決をサポートします。お気軽に下記よりお問い合わせください。