データベースの項目で「ID」「グループID」「データ項目」「順位」があります。

同じグループIDの中で順位がMAXの行を探してデータ項目をとってくるにはどうしたらいいでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/03/01 22:37:51
  • 終了:--

回答(3件)

id:vegah No.1

vegah回答回数496ベストアンサー獲得回数22005/03/01 22:53:38

ポイント20pt

データベース

私がやっている方法(自己流)ですが・・・

「グループID」ともう一項目として、「順位」と「データ項目」を文字列としてつなげた項目を作ります。

例えば、

「グループID」・・・ABCDE

「順位」・・・10

「データ項目」・・・5050

とすると、

「順位」と「データ項目」をつないで、 00105050 というようにします。

仮に、この項目を「順位データ項目」とします。

そして、「グループID」をグループ化して、「順位データ項目」は最大値を取ります。

最後に、「順位データ項目」から、「データ項目」の部分を取り出す。

というものです。

id:troubleantenna No.2

troubleantenna回答回数71ベストアンサー獲得回数02005/03/01 23:53:05

ポイント20pt

group byで抽出して、あとは元の表との組み合わせで行けるかと。

select

table.ID as ID,

table.グループID as グループID,

table.データ項目 as データ項目,

table.順位 as 順位

from table

natural join (

select グループID, max(順位) as 順位

from table

group by グループID

) as max_table;

多分これで動くと思います。

id:MATSU No.3

MATSU回答回数3ベストアンサー獲得回数02005/03/02 00:27:32

ポイント20pt

データベースは何ですか?

Oracle9.2では次のようにします。

select グループID,max(順位)

from table_hoge

group by グループID

;

id:katase_n

質問の仕方が悪かったみたいですね。。

相関服問い合わせで解決しました。

ありがとうございました。

2005/03/02 01:23:57
  • id:goldman
    まあ・・その・・

    SELECT ID,グループID,データ項目,順位 FROM テーブル名
    WHERE グループID = 選択対象グループID AND
    順位 IN (SELECT MAX(順位) FROM テーブル名 WHERE WHERE グループID = 選択対象グループID;
    でいいのでは?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません