はじめに
前回の記事でAthenaにSQLを記載してテーブルを作成する方法を
記載しましたが、今回はデータを抽出する方法を記載します。
EXCELのPowerQueryを使用しておりPowerQueryはコードを書かなくてもよいのですが、なんとなくSQLでデータの抽出結果がイメージしやすかったです。
SELECT FROM WHERE LIMIT
ただ、単にデータを抽出する処理です。
SELECT
*
FROM データベース名.テーブル名
WHERE フィールド名='1'
LIMIT 100
- [SELECT] はフィールド名を指定する。
- *はすべてのフィールドを指す。
- 特定のフィールドを抽出する場合は*の代わりにフィールド名を指定する
- [FROM] はどのテーブルから抽出するのかを指定する。
- データベース名から記載が必要
- [WHERE] は抽出条件を指定する
- String型のフィールドの場合は数値との比較であっても数値をシングルクォーテーションで囲む
- [LIMIT] は出力する件数を指定する
- 初見のテーブルの場合は必ずといってLIMITを付ける
集計関数
行数のカウント、フィールドに対して最大値最小値、合計などを取る関数のことを指します。
SELECT
SUM(数値フィールド) as "金額"
,COUNT(DISTINCT 文字列フィールド) as "カウント"
FROM データベース名.テーブル名
- [COUNT] は行数を返す。
- [COUNT(*)]は全行数を返す。
- [COUNT(フィールド名)]はフィールドの内NULLで無い行数を返す
- [MAX] は最大値を返す。
- [MIN] は最小値を返す。
- [SUM] は合計を返す。
- [DISTINCT] は重複を除外した数を返す。
GROUP BY
集計関数による集計をフィールド毎に行えます。
SELECT
集計フィールド, sum(数値フィールド) as "金額"
FROM データベース名.テーブル名
GROUP BY 集計フィールド
ORDER BY 並替フィールド
- [GROUP BY] は集計フィールド毎に集計が可能
- 行数はGROUP BYの対象分に減る
- 集計対象項目以外をSELECTする場合、そのフィールドには集計関数が付く必要がある
- [ORDER BY] で並び替えが可能
- ASCで昇順、DESCで降順
HAVING
集計結果に関して条件を付ける操作です。
SELECT
年月, SUM(数値フィールド) as "金額"
FROM データベース名.テーブル名
GROUP BY 年月
HAVING SUM(数値フィールド>=1000000
ORDER BY 年月 ASC
- [HAVING] はGROPU BYでの集計結果に対して条件を付ける
- WHEREとは異なる
SQLの実行順
SQLの実行順序は下記のとおりになります。
SELECTからの記載順ではないです。
NO | 構文 | 内容 |
---|---|---|
1 | FROM | テーブルを読込む |
2 | WHERE | 読込んだ内容にテーブルに条件で絞り込む |
3 | GROUP BY | 絞り込んだ結果から集計を行う |
4 | HAVING | 集計した結果に条件を付けて絞り込む |
5 | SELECT | フィールドが選択される |
6 | ORDER BY | 並び替えが行われる |
7 | LIMIT | 指定した行数が抽出される |
最後までお読みいただきありがとうございます。