FC2ブログ

複雑な集計を行える 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
がショートカット宣言しているところです

これについては、応用がききそうです
株価表示とか、
ゲームのアイテム購入画面とか
ネットショップの計算とかにも使えそうです
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

コメント

非公開コメント

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック