0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AthenaでSQLによるデータ抽出

Posted at

はじめに

前回の記事で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 指定した行数が抽出される

最後までお読みいただきありがとうございます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?