前回は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;

関数、グループ化、集計、およびデータ結合を利用することで、データをより深く理解し、価値ある洞察を得ることができます。

データ分析でお困りの企業様の課題解決をサポートします。お気軽に下記よりお問い合わせください。

    お名前