四則演算とGroup By文でいろいろ計算してみよう
前回のNoteでは、SELECT文やWHERE文を使って、データを取り出していました。
今回は、フィールド(列)のレコードひとつ一つに対し、
①たし算(+)
②引き算(-)
③かけ算(*)
④割り算(/)
することができます。
それでは、始めていきましょう。
フィールドのレコードひとつ一つにたし算、引き算、…などができる
フィールド(列)のレコードに対し、
①たし算(+)
②引き算(-)
③かけ算(*)
④割り算(/)
を使って、
フィールド(列)同士のレコードひとつ一つ
に計算が適用されます。
なお、たし算すると、
レコード全体(それぞれのレコード)に影響を及ぼします。
ここで、
select price+20
とすると、
price列(フィールド)のレコードひとつ一つに20を足したデータが出てきます。
また、
select price*1.1
のように
税抜価格を税込価格にしたいときに使えますね。
フィールド単位でまとめて集計もできる
集計関数には、
①合計(SUM)
②平均(AVG)
③データの数を数える。(COUNT)
④最大・最小(MAX・MIN)
︙
などがあります。
ん??どこかでみたことあるような…🤔
と思うかもしれません。
なぜなら、
Excelの関数の名前とそっくりだから
です。(AVGだけ違いますけどね。)
書き方は
select SUM(列(フィールド))
と書きます。
ですので、覚えやすいと思います。書き方は少し違うかもしれませんが・・・。
一定のグループ単位にまとめられるGroup By文
①合計(SUM)
②平均(AVG)
③データの数を数える。(COUNT)
④最大・最小(MAX・MIN)
ような集計関数を使う中で
日付ごとに集計の結果を出したいときもあるかもしれません。
そのときは、
Group By [カラム名]
を使いましょう。
これで
・月単位
・日単位
・商品単位で集計
したりすることができます。
文の順番ですが、
「Where→Group By」
であることを覚えておきましょう。
なお、
複数のフィールド(列)もカンマで指定
ができます。
カンマで指定できますが、指定した順番が優先順位になるので注意しましょう。
ではなぜ、
「Where→Group By」
なのでしょうか?
なぜなら、Where文は
すでにグループ化したデータに対して使う文ではないからです。
実は専用の構文があるんです。
Having文
というものを使います。
Group Byでグループ化したものを絞り込むにはHaving文を使おう
Having文とは
Group By文からさらに特定のレコード(行)を抽出する命令文
です。なので、
Whereはあくまでも、グループ化する前の命令文であることに注意
しましょう。
文の書き方は
Having [条件式]
と書きます。
なので、
Whereと混同しないよう
にしましょう。
では、Where文といっしょに使えるの?🤔
という疑問が湧いてくるかもしれません。その場合は、
GroupBy文の前に置くようにしましょう。
なので、置き方の順番は、
①Where
②Group By
③Having
となることに注意してください。
まとめ
今回は、
・フィールド同士の四則演算
・Where→Group By→Havingの順番で書く
を解説しました。それでは次回のNoteにてお会いしましょう。