重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

添付画像のようなテーブルがあります。
製品IDと販売店でユニークです。

製品毎に、最安の価格で売っている店を一覧として
出したいのですが、うまくいかず困っています。
表示としては
TEST1 100 A店
TEST2 300 C店
というようにしたいのです。
また、もし最安の店舗が複数あれば、登録日が一番新しい店を
最安店舗としたいです。

製品IDでGroupByをして、価格のminで、製品毎の最安はとれるんですが、
最安の店舗が複数ある場合に困っています。
サブクエリで登録日でソートしてTOP1とかになるのでしょうか。
冗長で重いクエリになってしまい、実用に耐えず、困っています。

うまい取り方があったらご教授いただけないでしょうか。
よろしくお願いします。

「製品の最安店舗を取りたい。」の質問画像

A 回答 (3件)

添付画像がありません。


サンプルデータをテキストでいいので補足してください。
    • good
    • 0

select abc.* from abc join ( select 製品id, 販売店


from ( select 製品id, 販売店,
ROW_NUMBER() OVER( PARTITION BY 製品id ORDER BY 価格 ,登録日 DESC ) AS RN
from abc ) as t where rn = 1 ) as t
on abc.製品id=t.製品id and abc.販売店=t.販売店
    • good
    • 0

SELECT *


FROM テーブル a
WHERE
価格 = (SELECT MIN(価格) FROM テーブル WHERE 製品ID = a.製品ID)
AND
登録日 = (SELECT MAX(登録日) FROM テーブル WHERE 製品ID = a.製品ID AND 価格 = a.価格)
ORDER BY 製品ID
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す