本記事では、海外のSQL学習サイト【SQL Bolt】を利用して、データベース初心者向けにSQLの基本を解説します。
第4回は「SQL Lesson 4: Filtering and sorting Query results」、問合せ結果のフィルタリングと並び替えについてです。
前回までにSELECT文でデータを取り出す方法を学びましたが、今回は「ほしいデータだけを取り出す方法」を学んでいきましょう。
- 「DISTINCT」でデータの重複を除いて取り出す方法
- 「ORDER BY」で問合せ結果を並び替える方法
- 「LIMIT」で結果として表示する行数を制限する方法
- 「OFFSET」で結果の何行目から表示するか指定する方法
ざっくり日本語訳
DISTINCT句で重複を取り除く
取り出したい列名の前にDISTINCTを付けると、重複する値を持つ行を除いて結果を表示することができます。
記述方法
SELECT DISTINCT 列名1, 列名2, …
FROM テーブル名
WHERE 条件;
ORDER BY で結果を並び替える
Lesson3までの演習問題で使ったテーブルでは、データが整列されていました(例えば西暦が古い順に並べられていました)。
でも実際の多くのデータベースでは、値は整列されていません。
そこで、ORDER BY句を使い、指定した列の値について問合せ結果を並べ替える方法があります。
並び替えることをソート(sort)といいます
記述する順番
SELECT DISTINCT 列名1, 列名2, …
FROM テーブル名
WHERE 条件
ORDER BY (並び替えたい)列名 ASC/DESC;
列名の後ろにASCを付けると昇順、DESCを付けると降順にソートできます。
LIMIT句・OFFSET句で結果の表示範囲を指定する
ORDER BY句とよく一緒に使われる句として、LIMIT句とOFFSET句があります。
この2つは、ORDER BYでデータを並び替えた上で、問合せ結果として表示する行を絞り込むことができます。
- 「LIMIT 数値」で、結果として取り出したい行数を指定
-
(例)「LIMIT 3」とすると、ORDER BYでデータを並び替えた状態での上から3行が取り出される。
- 「OFFSET 数値」で、行数のカウントをどこから始めるか指定
-
(例)「OFFSET 5」とすると、ORDER BYでデータを並び替えた状態で上から5行目まではスキップされる。つまり6行目が開始位置になる。
記述する順番
SELECT DISTINCT 列名1, 列名2, …
FROM テーブル名
WHERE 条件
ORDER BY (並び替えたい)列名 ASC/DESC
LIMIT 取り出したい行数 OFFSET 取り出し開始位置;
演習問題の和訳・解答
- 1. List all directors of Pixar movies (alphabetically), without duplicates
-
【和訳】Pixar映画のすべての監督をアルファベット順に重複なく挙げてください。
SELECT DISTINCT Director FROM movies ORDER BY Director DESC;
- 2. List the last four Pixar movies released (ordered from most recent to least)
-
【和訳】最近公開されたピクサー映画4作品を、新しい順に挙げてください。
SELECT * FROM movies ORDER BY Year DESC LIMIT 4;
- 3. List the first five Pixar movies sorted alphabetically
-
【和訳】ピクサー映画の最初の5作品を、アルファベット順に挙げてください。
SELECT * FROM movies ORDER BY Title ASC LIMIT 5;
- 4. List the next five Pixar movies sorted alphabetically
-
【和訳】ピクサー映画で次の5作品(問題3の続きの5作品)を、アルファベット順に挙げてください。
SELECT * FROM movies ORDER BY Title ASC LIMIT 5 OFFSET 5;
コメント