SQL(GROUP BY句)

集約操作(GROUP BY句)

データセットを見ていると国によっては複数のレコードを持っていることが分かります。GROUP BY 句を利用すると指定したカラムの値でグループ分けした結果に対して COUNT 関数などを利用した集計を行うことができます。

    SELECT
      <カラム>
    FROM
      <テーブル>
    WHERE
      <条件>

    GROUP BY
      <集約するカラム> -- 複数指定可能
    HAVING
      <集約後の結果に対する条件>
  • HAVING

集約後の結果に対する条件付与

→GROUP BYで特定のデータ条件に絞って集約

→その結果に対してさらに条件を絞る

  • WHERE

集約前の結果に対する条件付与

FROMやJOIN ONで調べた結果に対して条件を絞る

SQLの評価順序が下記のようになっているため、条件を絞るタイミングを意識してクエリを作成するといい。

基本的にSQLは以下の順番で実行される。

1.from  2.where  3.group by  4.having  5.select  5.union  6.order by  7.distinct

※上記の基本があるため、下記のようにselect句で別名をつけても、where句では評価されない。

select nickname AS n
  from Person
 where n = 'subaru'

-> エラー発生

下記数字の順番で読み込まれるため、2のnが何を示しているのかが読み取られていない。
3 select nickname AS n
1  from Person
2 where n = 'subaru'

 http://www.postgresql.jp/document/8.1/html/sql-select.html