スタートページ>
Javascript>
MySQL
MySQLの概要
←文法の基本(1)
←文法の基本(2)
←文法の基本(3)
→文法の基本(4)
一般形:GROUP BY(大計列名, 中計列名, …)
売上表から「得意先別商品別個数集計表」を作成します。
SELECT 得意先コード, 商品コード, SUM(数量)
FROM 売上表
GROUP BY 得意先コード, 商品コード;
得意先 商品 SUM(数量) コード コード 60 100 7 70 100 6 50 200 9 50 100 4 60 200 2
ケース1に得意先名、商品名を加える。
売上表の「数量」と商品表の「単価」から金額を計算する。
SELECT 売上表.得意先コード, 得意先名, 売上表.商品コード, 商品名, SUM(数量) AS 数量合計,
SUM(数量*単価) AS 金額合計, SUM(数量*単価)/SUM(数量) AS 平均単価
FROM 売上表, 得意先表, 商品表
WHERE 売上表.得意先コード = 得意先表.得意先コード
AND 売上表.商品コード = 商品表.商品コード
GROUP BY 売上表.得意先コード, 売上表.商品コード;
得意先 得意先名 商品 商品名 数量 金額 平均 コード コード 合計 合計 単価 60 得意先B 100 商品1 7 350 50 70 得意先C 100 商品1 6 300 50 50 得意先A 200 商品2 9 270 30 50 得意先A 100 商品1 4 200 50 60 得意先B 200 商品2 2 60 30
「得意先別売上高集計表」にしてみます。商品名は不要ですが単価が必要なので、商品表との結合が必要です。
SELECT 売上表.得意先コード, 得意先名, SUM(数量*単価) AS 売上高 FROM 売上表, 得意先表, 商品表 WHERE 売上表.得意先コード = 得意先表.得意先コード AND 売上表.商品コード = 商品表.商品コード GROUP BY 売上表.得意先コード;
得意先 得意先名 売上高 コード 60 得意先B 410 70 得意先C 300 50 得意先A 470
ケース3において、売上高 >= 400 のものだけを表示する。
SELECT 売上表.得意先コード, 得意先名, SUM(数量*単価) AS 売上高 FROM 売上表, 得意先表, 商品表 WHERE 売上表.得意先コード = 得意先表.得意先コード AND 売上表.商品コード = 商品表.商品コード GROUP BY 売上表.得意先コード HAVING 売上高 >= 400;
得意先 得意先名 売上高 コード 60 得意先B 410 50 得意先A 470
一般形: ORDER BY 大区分列名. 中区分列名. … 降順は DESC
売上表を得意先コード、商品コードの昇順にソートする。
SELECT * FROM 売上表 ORDER BY 得意先コード, 品名コード;
伝票番号 得意先 商品 数量 コード コード 1004 50 100 1 1006 50 100 3 1003 50 200 3 : : : : 1009 70 100 2 1011 70 100 2
「得意先別売上高集計表」を売上高の大きいものから表示する。
SELECT 売上表.得意先コード, 得意先名, SUM(数量*単価) AS 売上高
FROM 売上表, 得意先表, 商品表
WHERE 売上表.得意先コード = 得意先表.得意先コード
AND 売上表.商品コード = 商品表.商品コード
GROUP BY 売上表.得意先コード
ORDER BY 売上高 DESC;
得意先 得意先名 売上高 コード 60 得意先B 410 50 得意先A 470 70 得意先C 300
HAVING と合わせて使うこともできます。
SELECT 売上表.得意先コード, 得意先名, SUM(数量*単価) AS 売上高 FROM 売上表, 得意先表, 商品表 WHERE 売上表.得意先コード = 得意先表.得意先コード AND 売上表.商品コード = 商品表.商品コード GROUP BY 売上表.得意先コード HAVING 売上高 >= 400 ORDER BY 売上高 DESC;
得意先 得意先名 売上高 コード 60 得意先B 410 50 得意先A 470