こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

1つのSQLで2段階の抽出を行いたい

恐らくそれほど複雑なSQLではないと思いますが、中々SQLが作成できず困っています。
回答いただければ嬉しいです。

以下のテーブルがあったと仮定します。
テーブル名:
 売上げ明細
カラム:
 ・商品ID … 売上げ明細なので一意ではありません
 ・単価 … 同じ商品IDでも、レコードによって単価は異なります
 ・数量 … 1~5の整数のみとします

実際のデータは以下の通りです。

商品ID,単価,数量
1001,50,2
1001,60,5
1002,90,3
1003,60,5
1003,80,4
1003,90,1
1004,60,3

上記データを以下の通り抽出するには、どのようなSQLを組めばいいでしょうか?
1.まず各商品IDの中から単価が最大のレコードだけを取り出す

商品ID,単価,数量
1001,60,5
1002,90,3
1003,90,1
1004,60,3

2.次に数量でgroup by して、件数をカウントする

数量,件数
1,1
3,2
5,1


1つのSQL文で2の結果が得られれば、途中の抽出条件は特に問いません。
ちなみにMySQL5を使っています。

よろしくお願いします。

投稿日時 - 2012-12-01 19:39:49

QNo.7824924

すぐに回答ほしいです

質問者が選んだベストアンサー

SELECT
`数量`
,COUNT(`商品ID`)
FROM `売上げ明細`
WHERE (`商品ID`, `単価`) IN (SELECT `商品ID`, MAX(`単価`) FROM `売上げ明細` GROUP BY `商品ID`)
GROUP BY `数量`

投稿日時 - 2012-12-01 21:26:54

お礼

迅速なご回答ありがとうございます。
おかげさまで期待通りのデータが得られました。
(-人-)ありがたや~

投稿日時 - 2012-12-02 10:32:20

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-