8.MySQL入門 並び替え、範囲、グループ化

ここではMySQLでの並び替え、範囲、グループ化ついて解説していきます。

mysql

tb1

id name age
1 田中 27
2 山田 28
3 佐藤 29
4 鈴木 30
5 中村 30

今回はこのテーブルを例として解説していきます。

並び替え

SELECT *
FROM tb1
ORDER BY id ASC;

書式
SELECT カラム名 FROM テーブル名 ORDER BY カラム名;

「ORDER BY id;」もしくは「ORDER BY id ASC;」とすることで、指定したカラムで降順に並び替えて表示します。
昇順で並び替えるには「ORDER BY id DESC;」とします。

降順「ASC」は省略できますが、昇順「DESC」は省略できません。

表示する範囲の指定

SELECT *
FROM tb1
ORDER BY id
LIMIT 2;

実行結果

id name age
1 田中 27
2 山田 28

書式
SELECT カラム名 FROM テーブル名 LIMIT 表示件数;

「LIMIT」を使うことによって、表示するレコード数を指定することができます。
又、「LIMIT」後の数値をコンマで区切り指定することで、表示範囲を指定することができます。

SELECT *
FROM tb1
ORDER BY id
LIMIT 1,2;

実行結果

id name age
2 山田 28
3 佐藤 29

レコードの最初の番号は「0」となるので、「LIMIT 1, 2;」と指定することで、1~2番目のデータが表示されます。

グループ化

tb1

id sales
1 1000
1 2000
2 500
2 200
3 5000
3 6000

今回はこのテーブルを例として解説していきます。

SELECT id, AVG(sales)
FROM tb1
GROUP BY id
ORDER BY AVG(sales);

実行結果

id sales
2 350.0000
1 1500.0000
3 5500.0000

書式
SELECT カラム名 FROM テーブル名 GROUP BY カラム名;

「GROUP BY」を使用することでカラム名が同じものだけグループ化して表示させることができます。
例では「AVG()」関数を使用しておりグループ化したデータの平均でソートして表示しています。

グループ化後の条件

SELECT id, AVG(sales)
FROM tb1
GROUP BY id
HAVING AVG(sales) <= 1500
ORDER BY AVG(sales);

実行結果

id sales
2 350.0000
1 1500.0000

書式
SELECT カラム名 FROM テーブル名 GROUP BY カラム名 HAVING 条件式;

「GROUP BY」でグループ化したデータに条件式を定義する場合「HAVING」句を使用します。
例では売り上げの平均値が1500以下のものを表示させています。

記述の順序

いままで解説してきたもので記述の順序が違うとエラーになるのでMySQLの順番として
①SELECT
②FROM
③WHERE
④GROUP BY
⑤HAVING
⑥ORDER BY
⑦LIMIT
この順番で書くようにしましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*