本記事では、海外のSQL学習サイト【SQL Bolt】を利用して、データベース初心者向けにSQLの基本を解説します。
第9回は「SQL Lesson 9: Queries with expressions」、式を使ったクエリについてです。
ざっくり日本語訳
算術演算・関数を使ったSQL文
SQL では、式を使って複雑なデータ操作をすることができます。
下の例のように、基本的な算術演算に加えて、数学関数や文字列関数を使用したクエリを実行できます。
式を使った例
SELECT particle_speed / 2.0 AS half_particle_speed
FROM physics_data
WHERE ABS(particle_position) * 10.0 > 500;
上のSQL文の意味
「particle_positionの絶対値の10倍」が500を超える行について、「particle_speed / 2.0 」の計算結果を「half_particle_speed」という名前を付けて取り出す。
AS句で列や表に別名を付ける方法
各データベースではクエリで使用できる数学関数、文字列関数、日付関数が定められています。
式を使用すると、結果データの後処理にかかる時間を短縮できますが、クエリが読みにくくなる可能性もあります。
そのため、クエリのSELECT部分で式を使用する場合は、「AS」キーワードを使って説明用の別名を付けるのがオススメです。
ASで列名に別の名前を付ける方法
SELECT テーブル中の列名 AS 説明用の列名, … FROM テーブル;
「AS」を使って、出力結果の参照を簡単にしたり、複雑なクエリを簡略化したりすることもできます。
ASでテーブルに別の名前を付ける方法
SELECT 列名, AS better_column_name, …
FROM a_long_widgets_table_name AS mywidgets
INNER JOIN widget_sales ON mywidgets.id = widget_sales.widget_id;
演習問題の和訳・解答
- 1. List all movies and their combined sales in millions of dollars
-
【和訳】すべての映画とそれらの合計売上高を百万ドル単位で挙げてください。
SELECT Movies.Title, (Boxoffice.Domestic_sales + Boxoffice.International_sales) / 1000000 AS combined_sales FROM movies INNER JOIN Boxoffice ON Movies.Id = Boxoffice.Movie_id;
- 2. List all movies and their ratings in percent
-
【和訳】すべての映画とその評価をパーセントで挙げてください。
SELECT Movies.Title, Boxoffice.Rating * 10 AS Rating_percent FROM movies INNER JOIN Boxoffice ON Movies.Id = Boxoffice.Movie_id;
- 3. List all movies that were released on even number years
-
【和訳】偶数年に公開された映画をすべて挙げてください。
SELECT * FROM movies INNER JOIN Boxoffice ON Movies.Id = Boxoffice.Movie_id WHERE Year % 2 = 0;
コメント