バックエンド

【MySQL】2つの条件でまとめて数値を合計したい【初心者向け】

例えば家計簿みたいなWebサービスをつくりたいと思ったら、

『データベース』をうまく使う必要がでてきます。

例えば kakeibo というテーブルで、こんな内容になっていたとして。

いくつかのパターンで『SQL』文をつくってみたいと思います。

Sponsored link

mysql でとりあえず全件表示

SELECT * FROM `kakeibo`;

で全件表示されます。

FROM で 対象のテーブルを指定して、
SELECT で 表示させる行を決定します。

参考記事

Sponsored link

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`;

こんな出力結果になります。

アオキ
交通費、雑費、食費とtypeはまとまっているのに、金額が足されていない・・

金額を合計して表示するために、sum(price) としているんですね。

SELECT `type`, sum(`price`)  
FROM `kakeibo`
GROUP BY `type`;

なので、sum と GROUP BY はセットで使うことが多いのかなと思います。

Sponsored link

mysql 2つの条件でまとめて数値を合計したい

先ほどは交通費、雑費、食費などのtypeでまとめたのですが、
日付ごとに出力したいと思ってこう書いたとすると、

SELECT `type`, `date`, sum(`price`) 
FROM `kakeibo`
GROUP BY `type`;

こんな出力結果になります。

アオキ
なんか出力結果が変。。3月2日消えとるし・・

なぜダメかというと、

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つの条件でまとめるのをエクセルでやろうとすると、

なかなか手間だったりするんですよね。

アオキ
VLOOPUP関数とか使えばいけるかもですがちょっとめんどい・・

例えば2万行のデータだったりすると関数つくるのだけでも大変だったりします。

『mysql』などのデータベースで、複数のグループをまとめることに慣れてきたら、

いろんな分析だったり見せ方ができるようになってくるので、

興味があればぜひやってみてもらえればなと思います。

アオキ
最初はわけわからんかったのですが、何度もやっていると慣れてきます。Web系やるならぜひ使いこなしましょ〜

『mysql』関係ではこんな記事も読まれています。

1. 【mysql】SQL文のつくり方のコツ〜ちょっとずつ組み立てる〜【初心者向け】

2. 【mysql】2つの条件でまとめて数値を合計したい【初心者向け】

3. 検索システムのデータベースの作り方や考え方を8ステップで書き連ねてみる

アオキ
ツイッターでも記事ネタ含めちょろちょろ書いていくので、よろしければぜひフォローお願いしますm(_ _ )m

アオキのツイッターアカウント


関連記事一覧 (一部広告あり)

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


最近の記事

アーカイブ

  1. バックエンド

    【Laravel第4弾】Vue.js3(CompositionAPI+Scrip…
  2. データベース

    MySQLの講座をリリースしました
  3. オンライン教材

    【React】初心者向け講座をリリースしました【MUI】【Udemy】
  4. オンライン教材

    ChatGPTをビジネス活用する講座をリリースしました【Udemy】
  5. オンライン教材

    【ChatGPT】エンジニア編をリリースしました
PAGE TOP
Ads Blocker Image Powered by Code Help Pro

広告ブロックを摘出しました!!

ブラウザ拡張を使用して広告をブロックしていることが摘出されました。

ブラウザの広告ブロッカーの機能を無効にするか、
当サイトのドメインをホワイトリストに追加し、「更新」をクリックして下さい。

あなたが広告をブロックする権利があるように、
当方も広告をブロックしている人にコンテンツを提供しない権利と自由があります。

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock