人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

例えば以下のようなデータがあったとして、

nameが連続して同じで、かつrenbanが最大のレコードのみ抽出したいです。

renbangroup_id name
2183596yakisoba
2194596onigiri
2189596onigiri★
2184598pan
2190598cake
2195598cake★

どのようなSQLをかけばよいか教えていただきたいです。
どうぞよろしくお願い致します。

●質問者: FujiiRock
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●50ポイント

nameが連続して同じということは nameの件数が2件以上というとになります。
nameをcountし、renbanはmaxを取得し、nameのcountが2件以上のrenbanをキーとして 抽出すればよいでしょう。

SQLといってもDBによって違いがありますので DBは記載しておいたほうがいいですね。


FujiiRockさんのコメント
ありがとうございます。 DBはoracleです。 また、以下の場合、renban2196のramenは、次にgohanがきているので抽出したくないです。 renban group_id name 2183 596 yakisoba 2194 596 onigiri 2189 596 onigiri★ 2184 598 pan 2190 598 cake 2195 598 cake★ 2196 598 ramen 2197 598 gohan 2198 598 ramen

きゃづみぃさんのコメント
連続してということは ソート順が 重要ですね。 こういうのはストアドでカーソルを使うしかないかもね。

2 ● tezcello
●50ポイント

Oracle は手元にありませんからテストできませんが、rowid が使えたはずですよね。

hatena というテーブルにご提示のデータが入っているとします。

SELECT *, MAX(rowid)
FROM hatena H1
WHERE EXISTS
 ( SELECT *
 FROM hatena H2
 WHERE H1.name = H2.name
 AND (H1.rowid - 1) = H2.rowid
 )
GROUP BY name

こんな感じで如何でしょうか?

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ