• ベストアンサー

SQL最大値レコード抽出について

下記のようなテーブルがあったとしてフィールド1のコードごとにフィールド2が最大値のものを抽出したいのですが一回のSQLで可能ですか? フィールド1 フィールド2 abc 20070309 abc 20070302 abc 20070307 def 20070304 def 20070306 def 20070303 ・ ・ ・ 例: abc 20070309 def 20070306 ・ ・

  • MySQL
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

一回で可能です。GROUP BY と MAX を用いてみてください。 select フィールド1, max(フィールド2) from hogehoge ←適宜変更してください。 group by フィールド1 ;

関連するQ&A

  • Access 各レコードの中での最大フィールドを抽出したい

    Accessにつぎのようなテーブルがあります(例)。 各人の成績表 フィールド1:名前 フィールド2:1回目の得点 フィールド3:2回目の得点 フィールド4:3回目の得点 名前の重複はありません。 レコードごとに、フィールド2~4の最大値を抽出する方法を教えていただけると、たいへん幸せです。 どうぞ、よろしくお願いします。

  • グループ化+最大値

    お世話になっております。GomiYasikiです。 以下のような場合で、フィールドAが同じ中のフィールドBが最大値のものを抽出する場合はどのようにすればよいのでしょうか? お手数ですが、宜しくお願い致します。 テーブル名:テーブルA フィールドA,フィールドB,フィールドC AAAAA,1,ABC AAAAA,2,XYZ BBBBB,1,ABC BBBBB,2,DEF CCCCC,1,AAA ↓結果 AAAAA,2,XYZ BBBBB,2,DEF CCCCC,1,AAA

  • [SQL]重複内容を持つデータから1件抽出かつ複数のカラムを表示したい

    [SQL]重複内容を持つデータから1件抽出かつ複数のカラムを表示したい 初めてお世話になります。 データベース種別はH2です。 参考:http://www.h2database.com/html/main.html 下記のようなテーブルAがあるとします。   ID  |  TAG  | ―――――+―――――|   1   |  abc   |   1   |  def   |   1   |  ghi   |   2   |  abc   |   2   |  ghi   |   3   |  abc   |   3   |  def   |   3   |  ghi   |   4   |  abc   | 上記テーブルAから下記例のような結果を得られるSQLを知りたいのです。   ID  |  TAG  | ―――――+―――――|   1   |  abc   |   2   |  abc   |   3   |  abc   |   4   |  abc   | 上記結果でなくとも、   ID  |  TAG  | ―――――+―――――|   1   |  def   |   2   |  ghi   |   3   |  def   |   4   |  abc   | であっても構いません。(TAG列のデータはどんな内容でもよいです。) 実現させたいのは、 (1)ID列が重複しない結果を表示させたい、 かつ (2)TAG列も表示させたい ということです。 これでイケるだろ!と思ってあえなく失敗したSQLは下記です; select distinct(ID), TAG from A 宜しくお願い致します。

  • 最大値を含むレコードの抽出

    お世話になります。 SQLでIN句やサブクエリではなく、HAVING句+MAX関数を使用して最大値を含むレコードを抽出することはできるのでしょうか。 id | name | value --------------- 1 | aaaa | 2000 2 | aaaa | 1000 3 | bbbb | 1000 上の表でいうとnameフィールドでグルーピングしてidの1と3が抽出対象になります。MySQLを使用しておりますが、 標準SQLでお願いしたいです。 よろしくどうぞ。

    • ベストアンサー
    • MySQL
  • SQL文について(片方のテーブルに存在しないレコード抽出)

    以下のような2つのテーブルがあったとして、 2つともに存在する「店コード」を抽出するのはSQLは分かるのですが、 片方に存在しない「店コード」(以下の例の場合、「2」)を抽出するSQLを 一文で書くにはどうすればいいのでしょうか? <店テーブル> 店コード 住所・・・(その他、基本情報) 1 aaa 2 bbb 3 ccc <販売テーブル> 店コード 販売品目・・・(その他、販売数など) 1 xxx 3 zzz

  • 重複レコードの抽出

    Windows Server 2003上で、SQL Server 2000を 使用しています。下記のようなSQLを作成したいのですが、知識不足のためご助力願いたいのですが。 テーブル名 test フィールド seihin (1項目のみ) seihinの構成  先頭4バイト 製品コード   後半4バイト 連番(0000~9999) やりたいこと seihinの重複するレコードを含む 製品コードに対しそのコード別の件数の算出 例 xxxx0002,xxxx0011,yyyy1111が複数件あるとき、 seihinコードがxxxxであるもの全体の件数及び yyyyであるもの全体の件数 なお、下記のSQLにて重複レコードの抽出とカウントはできていますが、それ以降がわかりません。 select seihin,count(seihin) as scount from test group by seihin having (count(seihin)>1) 以上よろしくお願いいたします。

  • SQLでのレコードの抽出について。

    SQLでのレコードの抽出について。 ExcelのVBAを利用してOracleに接続し、必要なデータのみを抽出したいと考えています。 目的のレコードの抽出じたいには成功しているのですが、 他にも多数の処理を前後で行うのでなるべく高速に処理ができればと考えています。 そこでSQL、VBに詳しい方に作成したコードを見ていただき、もっと高速に処理ができるよう ご教授していただければと思います。 前置きが長くなりましたが、以下に作成したSQLと状況を記載します。 テーブル : t1会議マスタ フィールド: f11部門コード、f12会議NO、f13会議名、f14開催日、その他… テーブル2 : t2会議履歴 フィールド: f21部門コード、f22会議NO、f23出席者CD、その他… というテーブルがあり、ある出席者をもとに その出席者が出席した一番新しい会議の「会議名」「開催日」を取得したいのです。 そこでSQLを作成し、目的のレコードのみを表示するよう作成したのが以下のものです。 SELECT t1会議マスタ.f14開催日 t1会議マスタ.f13会議名 FROM t1会議マスタ INNER JOIN t2会議履歴 ON t1会議マスタ.f11部門コード = t2会議履歴.f21部門コード AND t1会議マスタ.f12会議NO = t2会議履歴.f22会議NO WHERE t1会議マスタ.f14開催日 IN ( SELECT MAX(t1会議マスタ.f14開催日) FROM t1会議マスタ INNER JOIN t2会議履歴 ON t1会議マスタ.f11部門コード = t2会議履歴.f21部門コード AND t1会議マスタ.f12会議NO = t2会議履歴.f22会議NO WHERE t2会議履歴.f23出席者CD = (変数)   AND t2会議履歴.f21部門コード = (???) ) GROUP BY t1会議マスタ.f14開催日, t1会議マスタ.f13会議名 以上です。 もっとシンプルかつ高速に行えればと思います(SQLで完全に絞り込まなくてももっと早い方法があればVBAなどで抽出してもかまいません)。 よろしくお願いいたします。

  • 特定の項目が同じ値のレコードを1件だけ出力するには

    教えて下さい。全くいいSQLが思い浮かびません^^; Table:Tbl(Primary Col1, Col2) ================================================ Col1, Col2, Col3, Col4, Col5, Col6 ------------------------------------------------ No1, Row1, ABC1, 1, DEF1, 1 No1, Row2, ABC1, 1, DEF1, 2 No2, Row1, ABC1, 1, DEF1, 1 No2, Row2, ABC1, 1, DEF1, 2 ================================================ 以上のテーブル情報の時、 Col3とCol4をキーにしてレコードを抽出します。 但し、抽出するレコード内容にCol5とCol6が同一なレコードは1件もありません。 上記テーブルから取り出したいレコードは以下の通りです。 Table:Tbl(Primary Col1, Col2) ================================================ Col1, Col2, Col3, Col4, Col5, Col6 ------------------------------------------------ No1, Row1, ABC1, 1, DEF1, 1 No1, Row2, ABC1, 1, DEF1, 2 ================================================ どういうSQLで上記のような抽出が可能になるでしょうか? 宜しくお願い致します。

  • 最大値の抽出

    今最大値を抽出するSQL文を考えているのですがうまくいきません。 例えば、Sampleテーブル count | num ------------- 1 | 11 3 | 12 2 | 13 9 | 14 6 | 15 のテーブルでcountが一番大きいnumを取り出したいのですが、どのようにしたらいいのでしょうか? この場合、countが一番多い9の num=14を取り出します。 よろしくお願い致します。

  • SQL の抽出方法

    あるテーブルABC に項目aとbとc があるとします。 今、抽出の条件が 仮にa=1,b=2 として、 この条件で複数件のデータが抽出され その中からcが最大のデータ1件のみを抽出するとします。 このSQLを作成する場合、 どのような方法がありますでしょうか? select文で、1度cのmax値を求めないといけないでしょうか?