例えば以下のようなテーブルがあります。
テーブル名: TEST
項目: KOUMOKU1 KOUMOKU2
KOUMOKU2には各商品の売り上げが入っており KOUMOKU1には各商品の商品名が入っています。
TESTに入っている KOUMOKU1 の中で一番多い売り上げ商品の商品名と売り上げ総額を出したいと考えているのですがいまいちやり方がわかりません。
その後2番目、3番目、4番目と上位5番目までの多い売り上げの商品の商品名と売り上げ総額を出したいのですが、お手数をおかけしますがわかるかたおりましたらよろしくお願いします。(出来れば一緒に1位から5位まで閲覧できるといいと考えています。)
シンプルに。
SELECT koumoku1, SUM(koumoku2) AS sum FROM test GROUP BY koumoku1 ORDER BY sum DESC LIMIT 5;
いまいちテーブル構造が分からないので何とも言えないのですが
こんな感じでできませんか
select
*
from
(
select
koumoku1,
sum(koumoku2) goukei
from
test
group by
koumoku1
)
order by
goukei
limit 0, 5
ご回答ありがとうございます。
mysql> desc test; +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | koumoku1 | varchar(128) | YES | | NULL | | | koumoku2 | int(8) | YES | | NULL | | +----------+--------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> select * from test; +----------+----------+ | koumoku1 | koumoku2 | +----------+----------+ | PC | 100000 | | PC | 120000 | | PC | 130000 | | PC | 140000 | | PC | 160000 | | MOUSE | 1980 | | MOUSE | 2980 | | MOUSE | 980 | | MOUSE | 1500 | | KEYBORAD | 7000 | | MEMORY | 4300 | | HDD | 6200 | | CD-ROM | 50 | +----------+----------+ 13 rows in set (0.00 sec) mysql>
こんなテーブルだとして
select koumoku1, sum(koumoku2) goukei from test group by ( koumoku1) order by goukei desc limit 0,5;
こうかな。結果は
+----------+--------+ | koumoku1 | goukei | +----------+--------+ | PC | 650000 | | MOUSE | 7440 | | KEYBORAD | 7000 | | HDD | 6200 | | MEMORY | 4300 | +----------+--------+ 5 rows in set (0.00 sec)
売り上げが一番多い商品だけを必要とするなら、limitを調整してください。
ご回答ありがとうございます。
シンプルに。
SELECT koumoku1, SUM(koumoku2) AS sum FROM test GROUP BY koumoku1 ORDER BY sum DESC LIMIT 5;
ご回答ありがとうございます。
ご回答ありがとうございます。