MySQL -集約関数

こんにちは、未来のデータベース魔术師たち!今日は、MySQLの集約関数の面白い世界に飛び込みます。プログラミングが初めてであっても心配しないでください。この冒険のなかであなたの親切なガイドとして、すべてをステップバイステップで説明します。コーヒーを一杯取り、始めましょう!

MySQL - Aggregate Functions

集約関数とは?

大きなカラフルなレゴブロックの箱があると想像してください。集約関数は、あなたのコレクションの中から特定のブロックを一つ一つ見ることなしに、迅速に数えたり並べ替えたり、特別なブロックを見つけるための魔法のツールです。MySQLでは、これらの関数は複数の値に作用し、単一の結果を返します。

一般的な集約関数

MySQLで最も頻繁に使用される集約関数を見てみましょう:

関数 説明
COUNT() 行数を数えます
SUM() 値の合計を計算します
AVG() 値の平均を計算します
MAX() 値の最大値を見つけます
MIN() 値の最小値を見つけます

集約関数の始め方

例に飛び込む前に、簡単なテーブルを作ってみましょう。私たちは小さなオンライン書店を運営していると想像してください:

CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100),
author VARCHAR(50),
price DECIMAL(6,2),
stock INT
);

INSERT INTO books (title, author, price, stock) VALUES
('The Great Gatsby', 'F. Scott Fitzgerald', 12.99, 50),
('To Kill a Mockingbird', 'Harper Lee', 10.99, 75),
('1984', 'George Orwell', 9.99, 100),
('Pride and Prejudice', 'Jane Austen', 7.99, 60),
('The Catcher in the Rye', 'J.D. Salinger', 11.99, 40);

書店データが整ったので、各集約関数を探索してみましょう!

COUNT(): 数えやすくする

COUNT()関数は、速い図書館司書のように、汗をかかずにあなたに本の数を教えてくれるものです。

SELECT COUNT(*) AS total_books FROM books;

このクエリは以下の結果を返します:

+-------------+
| total_books |
+-------------+
|           5 |
+-------------+

ここでCOUNT(*)は、私たちの'books'テーブル内のすべての行を数えます。'AS total_books'を使って結果に親しみやすい名前を付けました。

SUM(): 合計を求める

SUM()は、書店のキャッシュレジスターのように、値を迅速に合計します。

SELECT SUM(stock) AS total_stock FROM books;

結果:

+-------------+
| total_stock |
+-------------+
|         325 |
+-------------+

このクエリは'stock'カラム内のすべての値を合計し、在庫总数を教えてくれます。

AVG(): 中間点を見つける

AVG()は、「ゴールディロックス区域」を見つけるようなもので、高すぎず低すぎず、ちょうどいい!

SELECT AVG(price) AS average_price FROM books;

結果:

+---------------+
| average_price |
+---------------+
|     10.790000 |
+---------------+

これは私たちの店の本の平均価格を示しています。MySQLが非常に正確な数値を返すことに注意してください -背後で相当な計算を行っています!

MAX()とMIN(): 极端値を見つける

MAX()とMIN()は、データのスーパーヒーローのように、最大値と最小値を見つけるものです。

SELECT
MAX(price) AS most_expensive,
MIN(price) AS least_expensive
FROM books;

結果:

+----------------+-----------------+
| most_expensive | least_expensive |
+----------------+-----------------+
|          12.99 |            7.99 |
+----------------+-----------------+

このクエリは、最も高い価格と最も低い価格の本を一度に見つけます。効率的ですね?

集約関数の組み合わせ

これらの関数を組み合わせると本当に魔法が起きます。書店の包括的な概要を見てみましょう:

SELECT
COUNT(*) AS total_books,
SUM(stock) AS total_inventory,
AVG(price) AS average_price,
MAX(price) AS highest_price,
MIN(price) AS lowest_price
FROM books;

結果:

+-------------+------------------+---------------+---------------+--------------+
| total_books | total_inventory  | average_price | highest_price | lowest_price |
+-------------+------------------+---------------+---------------+--------------+
|           5 |              325 |     10.790000 |         12.99 |         7.99 |
+-------------+------------------+---------------+---------------+--------------+

哇!たった一つのクエリで、書店の在庫と価格の完全なスナップショットを得ることができました。

GROUP BYを使った集約関数

時々、データをグループ化してから集約関数を適用したい場合があります。例えば、各著者がどれだけの本を持っているか知りたい場合:

SELECT
author,
COUNT(*) AS book_count
FROM books
GROUP BY author;

結果:

+----------------------+------------+
| author               | book_count |
+----------------------+------------+
| F. Scott Fitzgerald  |          1 |
| Harper Lee           |          1 |
| George Orwell        |          1 |
| Jane Austen          |          1 |
| J.D. Salinger        |          1 |
+----------------------+------------+

このクエリは、本を著者ごとにグループ化し、各著者がどれだけの本を持っているかを数えます。著者ごとに本棚を整理するようなものです!

結論

そしてここまでが、MySQLの集約関数の素晴らしい世界です。これら強力なツールを使うことで、データを迅速に分析し、要約し、生の数値を価値ある洞察に変換することができます。

練習は完璧を生みます。自分でテーブルを作ってこれらの関数を試してみてください。それでは、データベースをクエリするプロになるまでの旅に出発しましょう!

快適なコーディングをし、あなたのクエリがいつも期待通りの結果を返すことを祈っています!

Credits: Image by storyset