SQLで最新の3件分の統計を取得する方法

このQ&Aのポイント
  • Access2000のSQLを使用して、テーブルAから最新の3件分の結果を取得する方法を教えてください。
  • テーブルAには日付と名前のカラムがあり、結果Bには最新の日付の3つのデータが表示されるようにしたいです。
  • 回答はSQL文で提供してください。クエリでも結構です。
回答を見る
  • ベストアンサー

SQLで最新の3件分の統計をとりたい

お世話になります。 Access2000のSQLを使用しています。 下記のテーブルAから、最新の3件分の結果を取得したいのですが、 どのようにSQLを作成すればよいでしょうか? 誠に勝手ですが、SQL文で回答頂ければ助かります。 ※クエリでも結構ですので教えて頂ければと思います。 以上宜しくお願い致します。 --テーブルA-- 日付  名前 2013/6/1 A 2013/4/1 B 2013/7/1 C 2013/3/1 D --結果B(最新の日付の3つ-- 2013/7/1 C 2013/6/1 A 2013/4/1 B

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

  • ベストアンサー
  • x-1919
  • ベストアンサー率52% (91/173)
回答No.2

Access 2000 では試していないが SELECT TOP 3 日付, 名前 FROM テーブルA ORDER BY 日付 DESC; とか

その他の回答 (1)

  • chie65535
  • ベストアンサー率43% (8514/19355)
回答No.1

SELECT * FROM (SELECT * FROM テーブルA WHERE テーブルA.日付=(SELECT Max(テーブルA.日付)FROM テーブルA) UNION SELECT * FROM テーブルA WHERE テーブルA.日付=(SELECT Max(日付) FROM テーブルA WHERE テーブルA.日付<(SELECT Max(テーブルA.日付)FROM テーブルA)) UNION SELECT * FROM テーブルA WHERE テーブルA.日付=(SELECT MAX(日付) FROM テーブルA WHERE テーブルA.日付<(SELECT Max(日付) FROM テーブルA WHERE テーブルA.日付<(SELECT Max(テーブルA.日付)FROM テーブルA)))) ORDER BY 日付 DESC;

関連するQ&A

  • SQL文で統計表を作りたい

    お世話になります。 SQL文(SQLPLUS)で統計表を作りたいと思っています。 (PL/SQL可) 可能でしょうか? <販売履歴テーブル> 販売店 販売日付 販売時刻 A 2008/05/20 10:00 A 2008/05/20 15:00 A 2008/05/20 18:00 A 2008/05/21 11:00 A 2008/05/21 12:00 A 2008/05/21 15:00 A 2008/05/22 10:00 B 2008/05/20 09:00 B 2008/05/20 11:00 B 2008/05/21 10:00 B 2008/05/21 15:00 B 2008/05/21 17:00 C 2008/05/20 10:00 C 2008/05/20 11:00 C 2008/05/20 14:00 C 2008/05/21 10:00 販売店、販売日付にて件数を一覧表示させたい <SELECT結果> A B C 2008/05/20 3 2 3 2008/05/21 3 3 1 2008/05/22 1 0 0 ちなみにデータベースはOracle10gです。 よろしくお願い致します。

  • Access 最新から2件分の日付

    色々と調べたのですが、データが思い通りにならなく困っております。 テーブルの新しい日付から2件を表示したいのですがわかりません。 以下のようなデータがあるのですが ID 日付 1 2009/09/15 1 2009/09/09 1 2009/09/02 2 2009/09/15 2 2009/09/09 IDごとに最新の日付を2件分抽出したいのです。 ID 日付 1 2009/09/15 1 2009/09/09 2 2009/09/15 2 2009/09/09 クエリで、上記のように実現するには、どのようにすればよいのでしょうか? ご指南頂けると助かります。宜しくお願い致します。 環境 OS:XP Access Version:2002

  • SQL(SELECT文)を教えてください

    SQL Serverを勉強中です。 以下のようなテーブルに、同一の日付に複数の名称・値のセットが存在します。 Date(日付)  Name(名称) Value(値) 20130101      a      10 20130101      b      20 20130101      c      30 20130202      a      5 20130202      b      10 20130202      c      15 このデータを、SQLのSELECT文で取得し、以下のような表を作りたいと考えています。 a b c 20130101 10 20 30 20130202 5 10 15 行が日付、列が名称になっています。 このように取得できるSQL文を教えてください。よろしくお願いします。

  • SQL について教えて下さい

    ---------------------------------------- テーブルAの カラム1、カラム2のデータが 10、作業A 20、作業B 30、作業C ---------------------------------------- テーブルBの カラム1、カラム2のデータが 10、2013/1/1 10、2013/2/1 20、1999/1/1 20、1999/2/1 ---------------------------------------- のようなデータがあります テーブルA、テーブルBのカラム1はリレーションです この2のテーブルから、テーブルBの最新日付の カラム1のグループ毎に選択するSQLを教えて下さい ---------------------------------------- 結果 10、作業A、2013/2/1 20、作業B、1999/2/1 ---------------------------------------- select テーブルA.カラム1,テーブルA.カラム2,テーブルB.カラム2 で、条件をどうしたら、テーブルBの最新日付を取り出せますか

  • ACCESSのクエリで同じSQL文だが結果が異なる

    ACCESS2003にて 選択クエリAをSQLビューで開きSQL文をコピー、 新規作成したクエリBのSQLビューに貼り付けて実行したところ、 AとBで結果の件数が異なりました。 そのままBを保存して終了。 BをSQLビューで開き、 SQL文の末尾の;を削除して実行すると、 Aと同じ件数の結果になりました。 再度Bを保存して終了し、 BをSQLビューで開き、 SQL文の末尾の;を削除して実行すると、 Aと異なる件数(元の結果)になりました。 何が原因なのでしょうか。 SQL文の内容は、サブクエリを含んでいて、サブクエリのFROMは SQLSERVERのリンクテーブルです。 よろしくお願いします。

  • Oracle10gのSQL分について

    Oracle10gのSQL分についての質問です。 [A]テーブルがあります。 フィールドは、 [CODE](key) [DATE1] [DATE2] [DATE3] と、あります。内容は、 A 2006/07/01 2006/07/04 2006/07/07 B 2006/07/03 2006/07/08 2006/07/05 C 2006/07/02 2006/07/06 2006/07/09 と、あります。 結果を A 2006/07/01 C 2006/07/02 B 2006/07/03 A 2006/07/04 B 2006/07/05 C 2006/07/06 A 2006/07/07 B 2006/07/08 C 2006/07/09 と、したいのです。つまり、3つのフィールドの日付順にしたいのです。 出来るのでしょうか? 宜しくお願い致します。

  • SQL文について

    Select文についての質問です。 テーブルA,B, Cがります。  Aテーブルのカラム A1,A2, A3  Bテーブルのカラム B1, B2, B3  Cテーブルのカラム C1,C2, C3 A1=B1,A2=B2の  A3,B3 と、 A1=C1でC3がNULLでないCテーブルの件数 を一度に取得したい場合、どのようなSQL文になるでしょうか。 よろしくお願いします。

  • SQL文を教えてください。

    特定の日付Xを指定した場合、 以下のような結果になるSQL文を教えてください。 よろしくお願いします。 1) 日付X = 2003-12-17 の場合 ID table_A_DATE table_B_DATE table_C_DATE ------------------------------------------------ 001 2003-12-10 2003-12-12 2003-12-14 002 2003-12-15 ---------- 2003-12-16 003 2003-12-06 2003-12-10 ---------- 004 2003-12-08 ---------- ---------- 2) 日付X = 2003-12-11 の場合 ID table_A_DATE table_B_DATE table_C_DATE ------------------------------------------------ 003 2003-12-06 2003-12-10 ---------- 004 2003-12-08 ---------- ---------- table A(テーブルAには全ユーザのデータがあります) ID DATE ------------------ 001 2003-12-10 002 2003-12-15 003 2003-12-06 004 2003-12-08 table B ID DATE ------------------ 001 2003-12-12 003 2003-12-10 table C ID DATE ------------------ 001 2003-12-14 002 2003-12-16

  • SQL

    以下のような売上テーブルから、 「2009年のデータ」と「2008年と比較した2009年の売上数の増減」を 取得したいです。(商品の昇順で) 取得できるSQL文を教えていただきたいです。 どうぞよろしくお願いいたします。 <売上テーブル> 年, 商品, 売上数 --------------- 2008, A, 30 2008, B, 20 2008, C, 20 2009, A, 10 2009, C, 40 2009, D, 50 <結果>↓ 商品, 2009年の売上数, 増減 ------------------------- A, 10, -20 B, , -20 C, 40, 20 D, 50, 50

  • データの件数を集計するための SQL

    データの件数を集計するための SQL について教えてください。 例えば以下のようなテーブルがあります。 ▼テーブル 名前 |交通手段|日付 -----+--------+---- Aさん|バス |5/1 Aさん|バス |5/2 Aさん|バス |5/3 Bさん|バス |5/1 Bさん|電車 |5/2 ※「日付」については、本質問に直接の関係はありません。 このテーブルにクエリを発行して、以下の結果を取得したいと考えています。 ▼取得したい結果 名前 |交通手段|回数 -----+--------+---- Aさん|バス |3 Bさん|バス |1 Bさん|電車 |1 当方がイメージしている流れは以下の通りです。 SQL は苦手でして、これをひとつにまとめることができません。 1) GROUP BY で束ねる SELECT 名前, 交通手段 FROM テーブル GROUP BY 名前, 交通手段 2) 1)の結果の1件目をSELECTする SELECT COUNT(*) FROM テーブル WHERE 名前='Aさん' AND 交通手段='バス' 3) 1)の結果の2件目をSELECTする SELECT COUNT(*) FROM テーブル WHERE 名前='Bさん' AND 交通手段='バス' 4) 1)の結果の3件目をSELECTする SELECT COUNT(*) FROM テーブル WHERE 名前='Bさん' AND 交通手段='電車' なおレンタルサーバ上 (MySQL 5.0.77) で稼働させるため、 なるべく高速な SQL を希望いたします。

    • ベストアンサー
    • MySQL

専門家に質問してみよう