• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Group By を使用して任意のカラムの最大値のデータを取得する。)

Group Byを使用して任意のカラムの最大値のデータを取得する方法

k_o_r_o_c_h_a_nの回答

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

select ID,店舗CD,適用日付 from (select x.*,row_number() over(partition by 店舗CD order by 適用日付 desc) R from TBL x) where R=1 ; とか。

anman0201
質問者

補足

ご回答ありがとうございます。 この方法で解決できそうです。 ちなみにPartition By のキーに複数項目を指定することはできるんでしょうか? 例えば、品番、サブ1、サブ2、サブ3ごとのデータで区切ってその中で昇順したい場面が出てきそうなので・・・ よろしくお願いします。

関連するQ&A

  • Group By と重複について

    ポイントテーブルのPoint.createdをGroupByして 日付毎のPoint.user_idをcountして出しました。 しかし、集計の期間内で重複しないPoint.user_idを countしなければいけなくなったのですが 日付でGroupByした結果から期間内の重複Point.user_idを省いた countは1クエリで可能でしょうか? ヒントでかまわないのでお助け願います。

  • Oracle:グループごとに最大日付の行を1件取得

    Oracle11gで、以下のようなテーブルから、 「IDごとに、DTが最大のレコードのBUMONを1件ずつ取得」 したいです。 <テーブルTB> ID DT BUMON ------------- 1 9/1 A 1 9/2 A 1 9/3 B ★Bを取得したい 2 9/4 C 2 9/5 C ★Cを取得したい 3 9/1 D 3 9/3 E 3 9/3 E ★Eを取得したい <取得したいデータ> BUMON ------- B C E <考えたSQL> select distinct A.BUMON from (select ID, DT, max(DT) over(partition by ID) as MAXDT, BUMON from TB) A, (select ID, DT, max(DT) over(partition by ID) as MAXDT, BUMON from TB) B where A.ID = B.ID and A.DT = B.MAXDT ; 上記のような方法を考えましたが、取得できますでしょうか? 現在、SQL実行環境がない場所にいるのですが、急ぎで確認したく、 どなたかお知恵を拝借できませんでしょうか?? また、可能であれば、★のレコード全体を取得するSQLもご教授いただきたく存じます。 <★のレコード全体を取得した結果> ID DT BUMON ------------- 1 9/3 B 2 9/5 C 3 9/3 E

  • 各店舗毎の最大売上の項目を取得したい

    Oracle9i+VB6.0で開発をしています。 各店舗毎のデータを以下のように持っています。 T_詳細データ ============== 店舗CD|項目CD|売上 ----------- 001|001|100 001|002|800 001|003|200 002|001|710 002|002|110 002|003|210 002|004|100 003|001|120 003|003|110 003|004|620 店舗CD毎の最大売上の項目CDを取得したいのです。 店舗CD|項目CD|売上 ----------- 001|002|800 002|001|710 003|004|620 SELECT  店舗CD ,  MAX(売上) FROM  T_詳細データ GROUP BY  店舗CD としてしまうと、どうしても項目CDが取得できません。 (当たり前ですが・・・) MAX() OVER(...)というのを使うのかな、と思ったのですが うまくできませんでした。 アドバイスよろしくお願いいたします。

  • 日付の最大値レコードを取得する方法について

    お世話になります。 SQLで日付の最大値を取得する方法です。 テーブルのデータ内容は以下のようになっています。 | 社員番号 | 社員名 | 日付 | 順序 | +---------+-------+-----------+-----+ | 100 | AAA | 2011/05/01 | 2 |   ← このレコードを取得したい +---------+-------+-----------+-----+ | 100 | AAA | 2011/05/01 | 1 | +---------+-------+-----------+-----+ | 100 | AAA | 2011/04/01 | 1 | +---------+-------+-----------+-----+ | 200 | BBB | 2011/04/01 | 2 |   ← このレコードを取得したい +---------+-------+-----------+-----+ | 200 | BBB | 2011/04/01 | 1 | +---------+-------+-----------+-----+ 取得したいレコードは、 社員ごとの最大日付の最大順序をもつレコードです。 (上記の1行目と4行目のレコードを取得したい) この場合、 下記のようなSQLを考えます。 --------------------------------- SELECT 社員番号, 社員名, 日付 FROM テーブル名 WHERE 社員番号 = 'xxx' AND 日付 = (SELECT MAX(日付) FROM テーブル名 ) AND 順序 = (SELECT MAX(順序) FROM テーブル名 ) ---------------------------------- 但し、上記の場合、 社員ごとに最大値レコードが取得できません。 どなたかレコード取得方法について 教えていただけないでしょうか? よろしくお願いいたします。

  • 条件ごとに最大値を持つデータの他のカラムを取得

    日付、天気、気温が並んでいるテーブルがあるとします。 そこからデータを抽出して天気ごとにグループ化し、 「天気」「最高気温」「最高気温が出た日付(複数あれば新しいほう)」「20℃以上になった最新の日付」 というビューを作りたいのですが、書き方がわかりません。 単純にグループ化すると最高気温はmaxで出せますが、日付もmaxにすると気温と関係のない最新の日付になってしまいます。 条件をつけたい場合どのようにすればいいか教えてください。

  • MySQLでグループ内での最大値の行を取得

    | id | no | date |  content | | 01 | 01 | 2011-05-11| A | | 01 | 02 | 2011-03-09| B | | 01 | 03 | 2011-05-11| G | | 02 | 01 | 2011-02-11| Q | | 02 | 02 | 2011-04-15| F | | 02 | 03 | 2011-06-21| Z | | 02 | 04 | 2011-05-11| D | | 02 | 05 | 2011-06-21| C | というテーブルから | 01 | 03 | 2011-05-11| G | | 02 | 05 | 2011-06-21| C | というデータを取り出したいのですが、 MAXやWHEREでのサブクエリを使用してもいまいちうまく取り出せません。 要は、各ID毎に、dateが一番新しいものの中で、noが大きい行をそれぞれ取り出したいです。

    • ベストアンサー
    • MySQL
  • 【SQL】日付が最大のレコード群を取得したい

    Aテーブルから日付が最大のレコードを取得し(AAとする) AAに対して、さらに抽出条件を加えたいです。 Aテーブル: 商品名│日付   │ あああ│2007/01/01│ いいい│2007/01/02│←このレコード ううう│2007/01/01│ おおお│2007/01/02│←このレコード 上記の場合、商品名=「いいい」「おおお」の レコードを取り出したいのです。 さらにはそのレコード達に対して抽出を行いたいのですが まずは、この取り出し方をご教授ください。 (※grpup句やMAXを使用してみましたが、うまくいきません。。) よろしくお願いします。

  • MySQLでvarchar型のデータの最大値を取得する方法

    お世話になります。 どなたかご回答&アドバイスをよろしくお願い致します。 MySQLで、以下のように登録されているデータがあるとします。 ID(varchar) | name(varchar) 0000001 | ああああ 0000002 | いいいい 0000004 | ううううう それで、登録されているIDの最大値+1を取得したいのです。 IDのカラムのデータ型がIntならmaxで取得できると思うのですが、データ型がvarcharなので…。 レコードの数+1というのは、IDが必ずしも1から飛びがなく登録されているとは限らないので、 その方法は危ないのでできません。 上の例だと、「0000005」を取得したいです。 どうぞご教授お願い致します。

    • ベストアンサー
    • PHP
  • SQL GROUP BY

    SQLについてお聞きしたいです。番号カラムの中で最大の数字をもつフィールドと 同じコードを持つデータを、表から全て取得したいと思っているのですが 書き出すとGROUP BYの式が間違っているというエラーが出てしまいます。 SELECT * FROM 表 GROUP BY コード HAVING MAX(番号) = コード どう調べればいいのか分からず四苦八苦しています。どこを直せばよいでしょうか?

  • MYSQL バイナリーデータに変換して取得

    MYSQLでSELECTして以下のテーブルのCODEカラムからバイナリーデータに変換してデータを取得したいのですが、どうしたら良いでしょうか? SELECT CODE FROM TABLE_NEME WHERE ID='XXX' <テーブルデータ> CODE(varchar型) 011A00046D0ADC4B

    • ベストアンサー
    • MySQL