例えば家計簿みたいなWebサービスをつくりたいと思ったら、
『データベース』をうまく使う必要がでてきます。
例えば kakeibo というテーブルで、こんな内容になっていたとして。
いくつかのパターンで『SQL』文をつくってみたいと思います。
mysql でとりあえず全件表示
SELECT * FROM `kakeibo`;
で全件表示されます。
FROM で 対象のテーブルを指定して、
SELECT で 表示させる行を決定します。
参考記事
mysql 項目ごとに合計値を出す
例えば 食費の合計や交通費の合計をだしたいと思ったら、SQL文はこうなります。
SELECT `type`, sum(`price`) FROM `kakeibo` GROUP BY `type`;
出力結果はこう。
SELECTは一旦おいておいて、
FROMでテーブルを指定して、
『GROUP BY』 で まとめたい列を指定します。
今回はtypeという列に食費や交通費を書いているので、 『GROUP BY type
』 になります。
最後にSELECTで表示させる行を決めるのですが、
もしこう書いちゃうと、
SELECT `type`, `price` FROM `kakeibo` GROUP BY `type`;
こんな出力結果になります。
金額を合計して表示するために、sum(price
) としているんですね。
SELECT `type`, sum(`price`) FROM `kakeibo` GROUP BY `type`;
なので、sum と GROUP BY はセットで使うことが多いのかなと思います。
mysql 2つの条件でまとめて数値を合計したい
先ほどは交通費、雑費、食費などのtypeでまとめたのですが、
日付ごとに出力したいと思ってこう書いたとすると、
SELECT `type`, `date`, sum(`price`) FROM `kakeibo` GROUP BY `type`;
こんな出力結果になります。
なぜダメかというと、
GROUP BY で、 type しかまとめていないので、
日付の部分は無視したような状態になってるんですね。
それぞれの日付でもまとめたい場合は、『GROUP BY』 を2つ書けばOKです。
SELECT `date`, `type`, sum(`price`) FROM `kakeibo` GROUP BY `type`, `date`;
せっかくなので日付順で並び替えてみます。
SELECT `date`, `type`, sum(`price`) FROM `kakeibo` GROUP BY `type`, `date` ORDER BY `date`;
並び替えは『ORDER BY』 ですね。
『GROUP BY』 で2つの条件でまとめるのをエクセルでやろうとすると、
なかなか手間だったりするんですよね。
例えば2万行のデータだったりすると関数つくるのだけでも大変だったりします。
『mysql』などのデータベースで、複数のグループをまとめることに慣れてきたら、
いろんな分析だったり見せ方ができるようになってくるので、
興味があればぜひやってみてもらえればなと思います。
『mysql』関係ではこんな記事も読まれています。
1. 【mysql】SQL文のつくり方のコツ〜ちょっとずつ組み立てる〜【初心者向け】2. 【mysql】2つの条件でまとめて数値を合計したい【初心者向け】
3. 検索システムのデータベースの作り方や考え方を8ステップで書き連ねてみる
アオキのツイッターアカウント。
この記事へのコメントはありません。