• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:検索結果に順位情報を追加したい)

検索結果の順位情報を追加したい方法

このQ&Aのポイント
  • 商品の売上順位情報を検索結果に追加する方法について解説します。
  • SQLクエリを使用して、指定した条件に基づいて商品の売上順位を計算し、検索結果に表示する方法をご紹介します。
  • 具体的なクエリの書き方や注意点についても説明します。

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

  • ベストアンサー
回答No.4

スカラサブクエリを使ってみてはどうでしょうか。 SELECT ( SELECT COUNT(DISTINCT B.KOUNYUU) FROM XXX B WHERE B.KOUNYUU <= A.KOUNYUU ) RNK ,A.ID ,A.NAME ,A.KOUNYUU FROM XXX A ランク付けはこんな感じで出来るので、 XXXの部分にmizutakiさんが作ったSQL文を カッコで囲んで入れてあげれば良いと思います。

mizutaki
質問者

お礼

なるほど、そういう方法があるのですね。 ありがとうございます。 参考にさせていただきます。

その他の回答 (3)

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.3

何かオカシイ (1)GROUP BY で指定していないNAMEに集計関数を使っていない。 (2)COUNT(BUY)=データ件数ではなく、SUM(BUY)=購入数合計では? 先ず、クエリを考えましょう. SELECT MAX(NAME),SUM(BUY) AS KOUNYUU,ID FROM ~ これをQとします。最も購入数が多い、即ち1位の商品はQのKOUNYUUから QのKOUNYUUを見た場合に、自分以上の値を持つレコードが1件しか ありません。同2位の商品では自分以上の値を持つレコードが2件だけ 存在します。そう、同じクエリを参照して、同じ値以上のレコード数を 数えて、これが順位になります。 SELECT MAX(A.NAME) AS NAME_X,MAX(A.KOUNYUU) AS KOUNYU_X, COUNT(B.ID) AS JUNNI,A.ID FROM Q A INNER JOIN Q B ON A.ID=B.ID AND A.KOUNYU<=B.KOUNYU GROUP BY ID ORDER BY JUNNI,A.ID 尚、同数のものが複数あると、順位はとび番になります。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

問題がいくつかあります。 IDでGROUP BYされた場合、その他の項目をSELECTで利用しても 値は保証されません。 この場合で言うと、NAMEがそれにあたります。 また、例示されたデータでは売上順位というのが、購入個数の 順位という意味でしょうか?順位が同率の場合はどうする つもりですか?それによって処理がだいぶ違います。

  • calltella
  • ベストアンサー率49% (317/635)
回答No.1

売上順位の情報を追加するのはどこに追加するのでしょうか? {入力した条件によって変える}と書いてありますが もう少し例などを交えて詳しく書いていただけませんでしょうか?

関連するQ&A