はじめに
前回の ALBのアクセスログをAthenaを使って分析する
を実施したあとに、いざ自分でクエリを考えて実行してみようと思ったら手が動かなかったので再度基本的なところから復習します。
使った教材
SQL Boltという教材を使用しました。
英語で若干わかりにくいですが、サクサク結果が見れるのでおすすめです。
テーブル
使うテーブルはSQL Boltで用意してくれていたのでそのまま使用します。
table:Movies
id | title | director | year | length_minutes |
---|---|---|---|---|
1 | Finding Nemo | Andrew Stanton | 2003 | 107 |
2 | Monsters, Inc. | Pete Docter | 2001 | 92 |
3 | Monsters University | Dan Scanlon | 2013 | 110 |
4 | Up | Pete Docter | 2009 | 101 |
5 | WALL-E | Andrew Stanton | 2008 | 104 |
6 | Cars | John Lasseter | 2006 | 117 |
7 | Toy Story | John Lasseter | 1995 | 81 |
8 | Brave | Brenda Chapman | 2012 | 102 |
9 | Toy Story 2 | John Lasseter | 1999 | 93 |
10 | The Incredibles | Brad Bird | 2004 | 116 |
11 | Ratatouille | Brad Bird | 2007 | 115 |
12 | Toy Story 3 | Lee Unkrich | 2010 | 103 |
13 | Cars 2 | John Lasseter | 2011 | 120 |
14 | A Bug's Life | John Lasseter | 1998 | 95 |
やってみた
シンプルなSELECT
SELECT * FROM movies;
結果としてはテーブル内のデータが全て抽出されます。
お次はこちら。
SELECT *
FROM Movies
WHERE Title = 'Finding Nemo';
タイトルがFinding Nemoの行を抽出してくれます。
WHWRE
は、行に対してデータをフィルタリングしてくれます。
以下で、Movies
テーブルの全てのデータを指定して、
SELECT *
FROM Movies
以下で、Title
がFinding Nemo
の行を抽出します。
WHERE Title = 'Finding Nemo';
順番に一個ずつ考えると理解しやすいですね。
ちょっと変えてみます。
SELECT *
FROM Movies
WHERE Title LIKE 'Toy Story%';
上記では以下のような結果になります。
id | title | director | year | length_minutes |
---|---|---|---|---|
7 | Toy Story | John Lasseter | 1995 | 81 |
9 | Toy Story 2 | John Lasseter | 1999 | 93 |
12 | Toy Story 3 | Lee Unkrich | 2010 | 103 |
WHERE Title LIKE 'Toy Story%';
の部分を変えました。
LIKE
は特定の文字列に対してのパターンマッチングをしてくれます。
%
はワイルドカード的な使い方です。
つまり、Toy Story
を文字列に含んでいれば、Toy Story
以降の文字列には何が含まれても抽出されます。
結果として2,3も抽出されました。
おわりに
こんな初歩的なところで終わってんじゃねえという声が聞こえてきそうですが、また次回でもう少し深ぼってSQLの学習していこうと思います!
誰かの参考になれば嬉しいです。