- ベストアンサー
Group Byを使用して任意のカラムの最大値のデータを取得する方法
k_o_r_o_c_h_a_nの回答
select ID,店舗CD,適用日付 from (select x.*,row_number() over(partition by 店舗CD order by 適用日付 desc) R from TBL x) where R=1 ; とか。
関連するQ&A
- Group By と重複について
ポイントテーブルのPoint.createdをGroupByして 日付毎のPoint.user_idをcountして出しました。 しかし、集計の期間内で重複しないPoint.user_idを countしなければいけなくなったのですが 日付でGroupByした結果から期間内の重複Point.user_idを省いた countは1クエリで可能でしょうか? ヒントでかまわないのでお助け願います。
- 締切済み
- MySQL
- 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
- 締切済み
- Oracle
- 各店舗毎の最大売上の項目を取得したい
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(...)というのを使うのかな、と思ったのですが うまくできませんでした。 アドバイスよろしくお願いいたします。
- ベストアンサー
- Oracle
- 日付の最大値レコードを取得する方法について
お世話になります。 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 テーブル名 ) ---------------------------------- 但し、上記の場合、 社員ごとに最大値レコードが取得できません。 どなたかレコード取得方法について 教えていただけないでしょうか? よろしくお願いいたします。
- ベストアンサー
- Oracle
- 条件ごとに最大値を持つデータの他のカラムを取得
日付、天気、気温が並んでいるテーブルがあるとします。 そこからデータを抽出して天気ごとにグループ化し、 「天気」「最高気温」「最高気温が出た日付(複数あれば新しいほう)」「20℃以上になった最新の日付」 というビューを作りたいのですが、書き方がわかりません。 単純にグループ化すると最高気温はmaxで出せますが、日付もmaxにすると気温と関係のない最新の日付になってしまいます。 条件をつけたい場合どのようにすればいいか教えてください。
- 締切済み
- MySQL
- 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を使用してみましたが、うまくいきません。。) よろしくお願いします。
- ベストアンサー
- Oracle
- 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(番号) = コード どう調べればいいのか分からず四苦八苦しています。どこを直せばよいでしょうか?
- ベストアンサー
- Oracle
- MYSQL バイナリーデータに変換して取得
MYSQLでSELECTして以下のテーブルのCODEカラムからバイナリーデータに変換してデータを取得したいのですが、どうしたら良いでしょうか? SELECT CODE FROM TABLE_NEME WHERE ID='XXX' <テーブルデータ> CODE(varchar型) 011A00046D0ADC4B
- ベストアンサー
- MySQL
補足
ご回答ありがとうございます。 この方法で解決できそうです。 ちなみにPartition By のキーに複数項目を指定することはできるんでしょうか? 例えば、品番、サブ1、サブ2、サブ3ごとのデータで区切ってその中で昇順したい場面が出てきそうなので・・・ よろしくお願いします。