複雑な集計を行える GROUP BY

練習のため
carts テーブルを作成
id INT PRIMARY A_I
item_id INT
count INT
でカラム作成し
INSERT INTO carts SET item_id=1,count=5;
で情報入力
いきなり UPDATE しようとしてもデータないので無理です
id を省いているのは
オートインクリメントなので、自動で入力されるからです
今回は数字しか入力していないけど
これはリレーションを前提としているのでOK
item_id に入っている数値は
my_items テーブルの id と一致しているので
これで商品がいくつ売れたかわかる
ではお試しということで
my_items テーブルとリレーションを張ってみる
SELECT my_items.item_name, carts.count FROM my_items, carts WHERE my_items.id=carts.item_id;
これで、商品名と個数が表示される
では、ここで応用
SUMを使えば、合計が得られます
ということで
SELECT SUM(count) FROM carts;
とすれば、counts の合計が得られます
これをさらに
GROUP BY を使って
~ごとの集計を表示できるようにします
SELECT item_id, SUM(count) FROM carts GROUP BY item_id;
でも、これだと数値だけなのでわかりにくい…
ということで
リレーションを使い
my_items テーブルの item_name を引っ張ってくるようにする
このSQLは
SELECT i.item_name,SUM(c.count) FROM my_items i, carts c WHERE i.id=c.item_id GROUP BY c.item_id;
これで、商品名と売上個数がでるようになります
実行してみてわかったのですが
FROM で ショートカットを宣言すれば
ほかのところで 省略形式で記述できるようです
FROM my_items i, carts c
がショートカット宣言しているところです
これについては、応用がききそうです
株価表示とか、
ゲームのアイテム購入画面とか
ネットショップの計算とかにも使えそうです

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です