【SQL】WHERE 〜 GROUP BY【順序が逆だと動きません】

SQL

構文

SELECT  [カラム1]  FROM  [テーブル]  GROUP BY  [カラム2];

GROUP BYWHERE句の順序が逆だと動かないので注意してください。

GROUP BY 〜 WHEREで特定のレコードを集計する例

以下に例を示します。

事前準備

テーブルを作ります

CREATE TABLE test (id INTEGER NOT NULL AUTO_INCREMENT,name VARCHAR(20) NOT NULL, PRIMARY KEY(id));

次にリンゴ、オレンジ、バナナを登録しておきます

INSERT INTO test (name) VALUES('Apple');
INSERT INTO test (name) VALUES('Orange');
INSERT INTO test (name) VALUES('Banana');
INSERT INTO test (name) VALUES('Apple');
INSERT INTO test (name) VALUES('Orange');
INSERT INTO test (name) VALUES('Banana');

準備完了

GROUP BY 〜 WHERE句を使う準備

準備したテーブルの内容は以下の通りです。

+----+--------+
| id | name   |
+----+--------+
|  1 | Apple  |
|  2 | Orange |
|  3 | Banana |
|  4 | Apple  |
|  5 | Orange |
|  6 | Banana |
+----+--------+

GROUP BY 〜 WHERE句で果物を集計する例

リンゴの数を集計します。集計にはCOUNT()関数を使います。

SELECT name,COUNT(name) FROM test WHERE name = 'Apple' GROUP BY name;

集計結果は以下の通りです。
[実行結果]

+-------+-------------+
| name  | COUNT(name) |
+-------+-------------+
| Apple |           2 |
+-------+-------------+

今回は以上です。

本記事の内容は、実際に手を動かしてみることをオススメします。

コピペで簡単に実行できますのでぜひ試して下さい。

最後に構文をおさらい

SELECT  [カラム1]  FROM  [テーブル]  GROUP BY  [カラム2];