SQLで違うテーブルの集計結果を比較する方法

このQ&Aのポイント
  • SQLで違うテーブルの集計結果を比較することは可能でしょうか?例えばAテーブルとBテーブルのデータを比較し、指定した日付が含まれるレコードの件数を調べる方法を解説します。
  • AテーブルのデータとBテーブルのデータを比較し、指定した日付が含まれるレコードの件数を調べる方法をSQLで実装することができます。詳細な手順を解説します。
  • SQL Server2005を使用して、異なるテーブルの集計結果を比較する方法を解説します。特定の日付が含まれるレコードの件数を調べるためのSQLクエリの作成方法について詳しく説明します。
回答を見る
  • ベストアンサー

SQLで違うテーブルの集計結果を比較することは可能でしょうか?

SQLで違うテーブルの集計結果を比較することは可能でしょうか? 例えばAテーブルがこんな感じです A1_ A2_ A3___ A4 ____A5 XX_ YY _5 __2010/8/13 _10:00:59 Bテーブルはこんな感じです。 B1_ B2_ B3___ B4 ____B5 XX_ YY_ 米 __2008/5/20_ 00:00:00 XX_ YY_ 味噌 _2009/8/22_ 01:02:33 XX_ YY_ 卵__ 2007/8/21_ 23:35:55 XX_ YY_ 醤油 _2010/7/16_ 15:30:35 XX_ YY_ 胡麻_ 2010/8/13_ 02:02:02 です。 見つけたい条件はBテーブルに指定した日付が含まれてる(例えば今日8/13だとか)レコードがあればそのXXとYYが何件あるかカウントをしてその値がAテーブルのA3の値と同一か調べたいのですがこういうことは出来ますでしょうか? SQL Server2005です

  • mr-r00
  • お礼率93% (480/516)

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

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

「XXとYYが何件あるかカウントをして」というのがイメージつかめませんが、 こういうこと? Select A.*,B.BCnt from A inner join ( Select B4,Count(*) BCnt from B Group by B4 ) C on A.A4=B.B4 これでA3とBCntを比較すればいいんじゃないでしょうか? *意味合いが違うのであれば、結果としての表がどういうものが必要なのかを提示するといいと思います。

mr-r00
質問者

お礼

ありがとうございます 参考になりました!

関連するQ&A

  • レコード集計のSQLについて

    お世話になります。 SQL Serverに関する質問です。 以下の内容を満たすSQLを作成したいのですが、 方法がわからず困っています。 (内容) *************************************************************** ・Aテーブル、Bテーブルには、以下のレコードが格納されています。 [Aテーブル] | key_code | code1 | code2 | code3 | money | person | ← カラム名 ---------------------------------------------- | 001 | 1 | 1 | 1 | 1000 | 10 | ---------------------------------------------- | 001 | 1 | 2 | 1 | 3000 | 10 | ---------------------------------------------- | 001 | 1 | 1 | 1 | 1000 | 10 | ---------------------------------------------- [Bテーブル] | key_code | cd1 | cd2 | cd3 | cd4 | cd5 | ・・・・・ | cd10 | ← カラム名 ------------------------------------------------------------ | 001 | 01 | 02 | 10 | 30 | 51 | ・・・・・ | 90 | ------------------------------------------------------------ | 002 | 01 | 02 | 03 | 10 | 40 | ・・・・・ | 55 | ------------------------------------------------------------ ・Aテーブルの key_code とBテーブルの key_code を関連付けて、  Bテーブルのcd1~cd10に格納されている各コード単位に集計した  Aテーブルのmoney及びpersonの値を取得したい。  例えば、 key_code = '000' でAテーブルとBテーブルを関連付けして、 Bテーブルのcd(1~10) = '10' で集計した Aテーブルの money と personの 値を求めたい。 **************************************************************** 初歩的な質問で申し訳ございませんが、 どなたかご教授願えませんでしょうか? よろしくお願いいたします。

  • SQLで違うテーブルの値を比較して値に差があるレコードを抽出したいので

    SQLで違うテーブルの値を比較して値に差があるレコードを抽出したいのですがヒントをいただけないでしょうか。 下に例を作ってみました。(テキストに貼りなおしてもらうと見易くなると思います) <Aテーブル> A1 A2 A3 A4 A5 ------- ------- ------- ------- ---------- XXXXXXX XX1 ABC 3 2009/05/08 WWCWWCW WW2 CCB 1 2008/03/21 DDDDDDD DD1 JPN 5 2007/08/08 GGGGGGG GX9 SOX 2 1977/01/04 FFFFFFF USJ NPB 3 2001/09/11 <Bテーブル> B1 B2 B3 B4 B5 ------- ------- ------- ------- ---------- XXXXXXX XX1 ibicha oshimu 2002/07/05 XXXXXXX XX1 takeshi okada 2005/07/15 XXXXXXX XX1 kamo shu 1857/09/25 WWCWWCW WW2 wao wao 2008/10/22 DDDDDDD DD1 ui hhh 2006/06/30 DDDDDDD DD1 jojoj x5xx 1999/09/09 DDDDDDD DD1 momo hara 2005/03/07 DDDDDDD DD1 itai u- 2003/12/22 DDDDDDD DD1 komano goal 2007/04/26 GGGGGGG GX9 dame record 2009/11/14 FFFFFFF USJ iki tai 1995/08/15 FFFFFFF USJ sstebu spi 2004/01/05 FFFFFFF USJ bb pp 2009/08/23 A1とB1は主キー、A2とB2は副キーです。 Aテーブルの「A4」カラムにはBテーブルのレコード数を持っています。(主キー、副キーが同じものの) しかし、よくよく見るとAテーブルの「GGGGGGG」のA4には「2」のはずなのにBテーブルには実際にレコードは1つしかありません。 こういう状態になってしまっているのを割り出したいのですがどのようにA4とBテーブルで数があってないものを抽出できるでしょうか。 よろしくお願いいたします。

  • SQLで「結果同士」の比較をするには?

    SQLで「結果同士」の比較をするにはどのように記述したらいいのでしょうか? Ora10gです。 例えば、構成としてAテーブルは KY項目1_____KY項目2_____Int型データ とします Bテーブルも KY項目1_____KY項目2・・・ といったデータ構成だとします。 Bテーブルのデータを group by KY項目1, KY項目2でカウントした時の件数とAテーブルのInt型データの数が一致しているか比較したいのですが、どのようなSQLでできますでしょうか?

  • 集計のSQLについて

    皆さんの知恵をお借りしたいと思っています。 どなたか、良い案がある方お願いいたします。 以下のテーブルがあります。 (売上テーブル) 品名   金額   購入者 ---------------------------- 鉛筆   20    Aさん 鉛筆   40    Bさん 鉛筆   30    Bさん 鉛筆   30        鉛筆   10        上のテーブルで、品名・購入者を集計キーとして、 金額を集計したい場合、 SELECT 品名,購入者,SUM(金額) FROM 売上テーブル GROUP BY 品名,購入者  というSQL文で,   品名   金額   購入者 ---------------------------- 鉛筆   20    Aさん 鉛筆   70    Bさん 鉛筆   40        という結果が得られると思いますが・・・、 これを、 品名   金額   購入者 ---------------------------- 鉛筆   20    Aさん 鉛筆   70    Bさん 鉛筆   30        鉛筆   10        という結果になるようなSQL文を作りたいのです。 購入者が入っているものについては、品名・購入者で集計して、 購入者が空欄のものは集計しないようにしたいと思っています。 UNIONを使えばできるとは思うのですが、 それ以外の方法で、1回のSQL文でできる方法があれば知りたいと思っています。 よろしくお願いします。

  • 集計のSQL文について

    SQLでの集計方法について質問です。 Oracle8iを使用しています。 あるテーブルに以下のようなレコードがあります。 ID 回数 値 1   1  100 1   2  200 1   3  300 2   1  150 2   2  550 .... この登録されている値をそのIDごとに、その回数まで回数ごとにサマリーした結果を出力したいのですが どうすればよいでしょうか。 ID 回数 値 1   1  100  ・・・(100) 1   2  300  ・・・(100+200) 1   3  600  ・・・(100+200+300) 2   1  150  ・・・(150) 2   2  700  ・・・(150+550) 宜しくお願いします

  • SQLの集計

    「商品」テーブルについて商品コードごとにカウントしたいです。 ただ、「商品」テーブルには「商品コードA」と「商品コードB」がある。 「商品コードB」が空欄の場合は、「商品コードA」としてカウント。 「商品コードB」が空欄でない場合は、「商品コードB」としてカウントし、商品コードAの数に含めない。 ※「商品コードA」が空欄の場合はありえない。 これをSQL文でどう表現しますか? よろしくお願いします。

  • 複数フィールドのカウント

    下記のようなテーブルで下記の結果を得られる SQL文を押していただけばと思います。 Micorosoft SQL Serverの予定です。 テーブル1 XX YY -------------------------- 商品a 商品d 商品b 商品a 商品c 得たい結果 商品a 2 商品b 1 商品c 1 商品d 1 UNIONでくっつけようと いろいろ考えて下記のようにしてみたいのですが SELECT XX,count(XX) FROM テーブル1 GROUP BY XX UNION SELECT YY,count(YY) FROM テーブル1 GROUP BY YY 下記の結果がえてしまい 商品a の結果を合計したです。 商品a 1 商品a 1 商品b 1 商品c 1 商品d 1 XX,YYを一括で集計(COUNT)できる方法やUNIONなどで別のフィールドにある同じ値を合計できる方法などもありましたらよろしくお願いします。

  • このような場合のSQLの記述

    下記のSQLの記述方法について教えてください。 TBL:smp A  B  C ------------ XX あ 5 YY え 3 ZZ お 2 XX え 1 のテーブルで、Aの列でグループ化し、Cの列の最大の行を出力したい。 アウトプットとしては、 A  B  C ------------ XX あ 5 YY え 3 ZZ お 2 にしたいのですが、A、Bでグループ化すると、上記のアウトプットにはならず、 Aだけでグループ化すると、Bの列が表示されない。 どうしたらいいでしょうか?

  • SQL カラムの値ごとの集計

    例えばテーブル名test01にカラムhogeとstatがあるとします。 statにはaまたはbの値が入ってます。 XXXX a XXXX b XXXX a XXXX a YYYY a YYYY b test01のテーブルが上記の様な場合、以下の様に集計したいです。 hoge a b (ヘッダ) XXXX 3 1 YYYY 1 1 どのようにSQLを書いたら良いか教えて下さい。 以上、よろしくご指導の程お願い申し上げます。

  • MySQLのGROUP_CONCATを実現する方法

    こんにちは。 T-SQLでMySQLのGROUP_CONCAT関数と同等の結果を出力する方法を探しています。 やりたいことは、 テーブル"T_A"の項目にカラム"C1"、"C2"があると仮定します。 テーブル"T_A"にはデータが以下のように登録されています。 C1|C2| ------ A1|YY| A1|XX| カラムC2のYY、XXの値を文字列連結"YY/XX"として、1レコードで表示したいです。 C1|C2 | --------- A1|YY/XX| ご存知の方がいらしたら、お教え願います。