• 締切済み

複数の分類ごとの集計を表示するクエリの書き方

T-SQLで、集計結果を出力するクエリの書き方について、教えてください。 以下のテーブル1から、年度ごとの国の数、種類の数を表示するクエリは、どのように書けばよいでしょうか? テーブル1: 年度 |国 |種類 2000 |日本 |りんご 2000 |米国 |りんご 2001 |日本 |りんご 2001 |英国 |メロン 200| |日本 |みかん 2002 |米国 |かき 2002 |中国 |みかん 2002 |中国 |かき 表示したい結果セット: 年度 |国数 |種類数 2000 |2 |1 2001 |2 |2 2002 |3 |2 WITH句などを使用して、国でグループ化したサブクエリ、種類でグループ化したサブクエリを年度でJOINする方法は思いつくのですが、もう少し簡単に書ける方法があれば、教えてください。 よろしくお願いします。

みんなの回答

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.1

select 年度,count(distinct 国),count(distinct 種類) from テーブル1 group by 年度 order by 年度 で出ます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Accessのクエリーで。

    テーブルA ID テーブルB ID 年 種類 テーブルC ID 年 種類 備考 テーブルCはBの詳細をかいたようなものになっていて、希望した時だけみられるようになっています(クリックする)。 これらのテーブルをもとにクエリーを作成しました。 テーブルA-B-Cの「ID」でリレーションがされています。 B-Cの「年」もリレーションされています。 たとえば、10というIDの人がいて、2001年と2002年のデータがあったとします。 ID | 年   | 種類 | 備考 10 | 2001 | みかん | 10 | 2002 | りんご | 青森産 10 | 2002 | みかん |愛媛産 10 | 2002 | めろん | というような感じだとします。 これがそれぞれABCに入っています。 クエリーのリレーションで「種類」にリレーションを貼らないと、 10 | 2002 | りんご | 青森産 10 | 2002 | りんご | 愛媛産 10 | 2002 | りんご | 10 | 2002 | みかん | 青森産 10 | 2002 | みかん | 愛媛産 10 | 2002 | みかん | 10 | 2002 | めろん | 青森産 10 | 2002 | めろん | 愛媛産 10 | 2002 | めろん | とダブッてしまい、「種類」でリレーションをはると 10 | 2002 | りんご | 青森産 10 | 2002 | みかん | 愛媛産 と、備考に何かが入ってるものしか出なくなってしまいます。 これを回避するにはどのようにしたらいいのでしょうか? よろしくお願いします。 AC2000です。

  • Accessのクエリ

    Access2000です。 お願いします。 テーブルが以下のようになっています。 (例)  種類   個数 りんごA  1 りんごB  2 みかん   1 ばなな   1 クエリで抽出するときにりんごはA,Bの区別なくまとめて、 個数を足して3と表示させたいのです。 どのようにしたら良いでしょうか? どうぞよろしくお願い致します。

  • 結果を横に表示するSQLを教えてください

    SQL初心者です。 以下のような縦に表示されるクエリを横向きに表示する際のクエリを教えて頂けないでしょうか。 現在のクエリ結果 日付   種類   合計 4月1日 りんご 10 4月1日 みかん 20 4月2日 みかん 15 4月2日 りんご 30 4月3日 みかん 40 4月3日 りんご 5 ※クエリ詳細 select 日付,種類, sum (数量) as 合計 from テストテーブル group by 日付,種類 order by 日付 ※元データ 元データ 日付   種類   数量 4月1日 りんご 5 4月1日 りんご 2 4月1日 りんご 3 4月1日 みかん 10 4月1日 みかん 3 4月1日 みかん 7 上記を以下のような結果にしたいです。 種類  4月1日 4月2日 4月3日 りんご 10   30   5 みかん 20   15   40 わかりにくい説明で申し訳ございません。 どなたかご回答頂ければ幸いです。 よろしくお願い致します。

  • 5年生の問題です

    みかん、りんご、かきの3種類のくだものあわせて160コを80人の生徒に2コずつわけました。もらった種類とその人数を調べると、次のことがわかりました。 (1)みかんを2コもらった生徒は11人でした。 (2)りんごを2コもらった生徒とかきを2コもらった生徒の数は同じでした。 (3)異なるくだものをもらった生徒は39人でした。 (4)かきをもらった生徒は41人でした。 問1.りんごとかきを1コずつもらった生徒は何人ですか。 問2.みかんは何個ありましたか。 恥ずかしながら手も足も出ませんでした。宜しく御願いします。

  • Accessのクエリ

    Accessのクエリを作成しました。 クエリの結果例    日付        品物  2011/10/1   リンゴ 2011/10/3   みかん 2011/10/4   リンゴ 2011/10/5   バナナ 2011/10/6   みかん        ・        ・        ・ この結果をもとに、各品物のカウント数を計算したいのですが クエリ等どう使うと可能になるでしょうか。 Excelは出来る限り使いたくありません。 Access入門者ですので、可能な限り分かりやすくお願いします。

  • 「Access2000」クエリー作成についてお教えください。

    たとえば、売上テーブルから売上先、商品、数量を抽出するクエリーを作成する場合、数量分のレコードを発生させたいのですが・・・。 つまり、売上テーブルに次のレコードがあったとき・・・  A商店 りんご 3個  B商店 みかん 2個 クエリーには以下のように表示させたいのですが・・・  A商店 りんご 3  A商店 りんご 3  A商店 りんご 3  B商店 みかん 2  B商店 みかん 2 以上、よろしくお願いします。

  • SQLでグループ化して降順表示がうまくいきません

    個人的にMysql、php環境でサイトを作っております。 そこで、素人質問で申し訳ありませんが、SQLでお伺いしたい点があります。 例えば下のようなテーブルがあります。 ▽果物テーブル 果物ID | 果物名 | 売れた日付 1 | リンゴ | 2008/11/1 2 | みかん | 2008/11/2 3 | みかん | 2008/11/3 4 | リンゴ | 2008/11/4 これを、 『最近売れた』果物順に、『グループ化』して並べ替えたいと思い、 下記のようなsqlを組みました。 $sql = "SELECT 果物名, FROM 果物テーブル GROUP BY 果物名 ORDER BY 売れた日付 DESC"; 意図としてはリンゴ、みかんの順に並べ替えたいのですが、 みかん、リンゴの順に表示されてしまいます。 想像では、グループ化したとき、古い日付の方が残ってしまい、 | リンゴ | 2008/11/1 | みかん | 2008/11/2 この部分を対象にして日付を降順にしてしまうからだと思うのですが、 これをうまく解決する方法が分かりません。 MSアクセスなどですと先に二重にクエリをかけるなどすることで 「先に降順で並べ替えたクエリを出し、その後グループ化させる」 など処理が簡単なのですが、phpではどうするのかいまひとつ分からず・・・ 申し訳ありませんがよろしくお願いします。

    • ベストアンサー
    • PHP
  • 各グループごとの集計結果をクエリで求めたい

    Access2003のクエリについてです。 (1)のようなテーブルに対してして(2)のような結果を出したいのですが、集計結果の全レコードに対して、各該当するグループごとの集計結果がうまく計算できません。 [都道府県別合計],[商品ID別合計],[月度別合計]は一つのクエリの中で求められるものなのか、サブクエリで先に求めるものかどういう方法をとるのがいいのでしょうか? (1) 都道府県, 商品ID, 日付, 数量, 単価 (2) 都道府県, 商品ID, 月度:Format(日付,"yyyy/mm"), [都道府県別合計], [商品ID別合計], [月度別合計] (グループ化), (グループ化), (グループ化)

  • MySQL + PHP 同じテーブルを対象にした複雑なクエリ

    こんばんは。 Mysql+php環境で、以下のようなテーブルを持っています。 ちょっと複雑な内容でクエリ結果を求めたいのですが、 うまい方法が見つからず、質問させて頂きます。 ―――――――――――――――― ▽ユーザーテーブル ―――――――――――――――― user_id |user_name 1 |タロウ 2 |ヨシコ 3 |シゲル 4 |マユミ ―――――――――――――――― ▽所有果物テーブル ―――――――――――――――― goods_id |goods_name |user_id 1 |パイン |1 2 |みかん |1 3 |メロン |1 4 |リンゴ |2 5 |みかん |2 6 |イチゴ |2 7 |グレープ |3 8 |イチゴ |3 9 |キウイ |3 10 |リンゴ |4 11 |みかん |4 12 |メロン |4 ―――――――――――――――― ▽出力したい条件 ―――――――――――――――― 自分(例えばマユミ)が所有している果物(goods)と、 いずれか同じものを持っている人(user)が 他に持っている果物(goods)を出したいが、 自分が既に所有しているものは除く。 ―――――――――――――――― 今回のデータと条件ですと、 同じものを持っているuserはタロウとヨシコで、 彼らが持っていてマユミが持っていない果物は 「パインとイチゴ」になります。 このような結果を出したいのですが、 これを出力するにはどのようなSQL文にすればよいでしょうか? 実際のデータはもっとレコード数が多いテーブルです。 サブクエリを駆使しても、どうも思った結果が出ず・・・ どうかお助け下さい。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • リストボックスの複数選択について

    ACCESS2003を使っています。 入力用フォームにリストボックスを作って 複数選択するようプロパティで変更しました。 この情報をテーブル上に反映させることができません。 どうしたらいいのかお教えください。 具体的には 入力用フォームに りんご(*) みかん かき(*) スイカ   (*)印は黒反転 この状態で入力するとテーブル上に りんご かき というように表示するようにしたいのです。