• ベストアンサー

ACCESS クエリで、グループ化したものをカウントしたい

SQLでなくクエリで、グループ化したものをカウントしたいのですが、クエリを2個作ればよいのはわかるのですが、これを1つのクエリで作るのは可能でしょうか? 現状: クエリ1 グループ化 クエリ2 クエリ1の結果をカウント あまりにクエリを作り過ぎる為、今後の向上の為にと思い、質問します。 よろしくお願いします。

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>>Sum(1/DCount("*","テーブル名","グループ='" & [グループ] & "'")) >が理解できませんでした。(再現もできませんでした) 質問にテーブルの情報がなかったのでこのように書きました グループとは質問の1段目のクエリでグループに指定したフィールドの名前です グループAが3レコード、Bが2レコードあれば 1/3+1/3+1/3+1/2+1/2=2 という結果が得られます

PearlJam69
質問者

お礼

ありがとうございました! 再現できました! >Sum(1/DCount(・・・ すごいアイデアですね。 これは思いつかないです・・・。 精進したいと思います。

その他の回答 (2)

noname#60992
noname#60992
回答No.2

クエリはGUIでSQLを発行するものです。 クエリを開いて、「表示」→「SQLビュー」 にしてみてください。 [ ]が多かったりして、かなり読みにくいですが 発行しているSQL文を見ることができます。 ここでSQL文を編集することもできます。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

>SQLでなくクエリで、 SQLもクエリも同じものですよ クエリデザインビューで作りたいということでしょうか テーブルの詳細が分かりませんが、式フィールドだけのクエリを作ればいいかな Sum(1/DCount("*","テーブル名","グループ='" & [グループ] & "'")) でもSQLを使うか、クエリを2段に使うほうが一般的だしスマートですよ

PearlJam69
質問者

お礼

ありがとうございます。 >クエリデザインビューで作りたいということでしょうか そうです。だた、いちいちクエリに名前を付けなくてはならないのが、効率的でないように感じたんです。SQLでサブクエリで書いてもよいのですが、後から第三者が見て分かり易いものにしたい、という思いもあります。 事前にテーブルの詳細を書かなかったのですが、ご回答いただいた、 >Sum(1/DCount("*","テーブル名","グループ='" & [グループ] & "'")) が理解できませんでした。(再現もできませんでした)よって >クエリを2段に使うほうが一般的だしスマートですよ ということですので、そうしたいと思います。

関連するQ&A

  • Access カウント

    3種類の売上があるのですが売上0以外の数を数え業態でグループ化する場合 7つのクエリが必要だと思うのですが間違っていないでしょうか? 売上の抽出条件にnot 0指定したクエリを3つを作成します。 抽出クエリ1 抽出クエリ2 抽出クエリ3 このクエリから新たなクエリを作成しさらに業態でグループ化し売上をカウント指定します。 業態別カウントクエリ1 業態別カウントクエリ2 業態別カウントクエリ3 このクエリから新たなクエリを作成。 業態で結合、フィールドに各業態別売上カウント、業態名を設定。 グループ化したクエリに抽出条件を指定しても駄目だということに最近気づきました・・・。

  • Accessクエリでのグループ化

    Accessクエリでのグループ化 以下の2つのテーブルが有ります。 ■社員テーブル ID 名前 1 Aさん 2 Bさん 3 Cさん 4 Dさん 5 Eさん ■受付テーブル ID 受付内容 受付日   社員ID 1  xxxxx 2010/3/1   1 2 xxxxx 2010/3/20   3 3 xxxxx 2010/4/10   2 4 xxxxx   2010/4/11  5 5 xxxxx 2010/4/15  1 6 xxxxx 2010/4/30  2 7 xxxxx 2010/5/3  4 そこで社員毎の受付数をカウントしたいと思っています。 ※受付日が2010/4/1以上5/1未満 名前 受付回数 Aさん 1 Bさん 2 Cさん 0 Dさん 0 Eさん 1 となるイメージです。 しかし、実際にクエリを作ると結果が 名前 受付回数 Aさん 1 Bさん 2 Eさん 1 と、なってしまいます。。 名前:グループ化 受付テーブルのID:カウント 受付日:>=2010/04/01 and <2010/05/01 ※社員テーブルの『ID』と、受付テーブルの『社員ID』を  紐つけており、結合プロパティでは『社員テーブルの  全レコードと受付テーブルの同じ結合フィールドのレコード  だけを含める』としております。 あらかじめ、受付テーブルで受付期間の条件でクエリ を作成しておき、それと社員テーブルを紐つけた場合は イメージ通りの結果になるのですが、1つのクエリで 上記イメージでの結果を表示したいと思ってます。 可能でしょうか? ご教授願います。

  • Access クエリでできないことは?

    Accessの勉強をしていまして、だいたいひととおりはわかるのですが (VBAに関してはかじる程度です) SQLについて知りたいことがありますので、質問させてください。 Accessではクエリの裏でSQLが記述されているのは知っていますし、 簡単なクエリであればSQLを読むこともできます。 ただ、今後より深くSQLを勉強していくべきかどうか悩んでいまして・・・ 基本的には、クエリでできるならそれでいいと考えています。 ただ、たとえばユニオンクエリのようにSQLを直接記述しないとできないことも あるようですので、質問です。 SQLを記述しないとできないことというのは、他に何があるのでしょうか? かなり特殊なことであれば(パススルーとか?)ほとんど必要ないような気も していますが、普通に使っていて必要になるようなことで何かあるでしょうか? よろしくお願いします!

  • Accessクエリ結果をカウント(集計)する方法を教えてください。

    Accessクエリ結果をカウント(集計)する方法を教えてください。 111 111 222 とあった場合、 111 2 222 1 とカウントしたい。 教えてください。

  • SQLのクエリで教えてほしいです。

    SQLのクエリで教えてほしいです。 ある列のTOP10を出してグラフを作成したいと考えております。 また、そのTOP10の行をカウントして何件あるかを知りたいのですが なかなか思うように動きません。 以下クエリを作ったのですが、結果に16行の結果(Top16?) になってしまいます。 また、一つのSQLで、Countも含めたいと思ってますが、こういった場合 はどこに記述すればいいのでしょうか。 select TOP (10) Percent hoge from hogehoge group by hoge order by hoge ご存知の方、よろしくお願い致します。

  • Access2003一つのクエリで結果を出したい2

    お世話になります。 Access2003を利用しておりますが、一つのクエリで以下の算出(抽出?)は可能でしょうか。 検品テーブル  ・ID  ・ライン  ・グループ  ID ライン グループ  1  L1    G1  2  L1    G1  3  L1    G2  4  L1    G2  5  L1    G2  6  L2    G3  7  L2    G3  8  L3    G4  9  L3    G4  10  L3    G4  11  L3    G4  12  L3    G5  13  L3    G5  14  L3    G6  15  L4    G7 結果として、一つのラインでのグループ数の最大値(上記の例だとL3はグループが3つあるので3)を一つのクエリで算出したいと考えております。 以下のように3つのクエリを作成すれば結果は得られるのですが、できれば一つのクエリでやりたいところです。  (1)検品テーブルを、[ライン]と[グループ]でグループ化    L1 G1    L1 G2    L2 G3    L3 G4    L3 G5    L3 G6    L4 G7  (2)上記クエリをグループ化し[グループ]をカウント    L1 2    L2 1    L3 3    L4 1  (3)上記クエリでグループカウントの最大値      3 この最大値3を算出するのを一つのクエリで行いたいのですが、可能でしょうか。 ご教授お願い致します。

  • Access 2000、ユニオンクエリーがどうしても出来ない!

    初歩の質問ですが、ユニオンクエリーが出来ません。 やりたい事は非常に単純です↓↓ 1:テーブル1、テーブル2、テーブル3があります。 2:各テーブルのデータ内容は様々ですが、共通項目として「品番」を持っています。但しテーブル1は「製品名」、テーブル2と3は「品番」という項目名になっています。 3:各テーブル内に、品番が幾つ入っているか、集計クエリでカウントします。項目名が違うので以下のように処理しました。  <テーブル1の場合>    フィールド|品番のカウント: 製品名|タイトル: "テーブル1"    テーブル |テーブル1     集  計 |カウント  <テーブル2(或いは3)の場合>    フィールド|品番のカウント: 品番|タイトル: "テーブル2"    テーブル |テーブル2     集  計 |カウント 4:3の集計クエリーを繋ぎ、テーブル1~3の品番件数を一気に表示させたい  <ユニオンクエリの内容>     SELECT *     from Q0_カウント_テーブル1     UNION select *     from Q0_カウント_テーブル2     UNION select *     from Q0_カウント_テーブル3; 5:私の予想としてはこんな風↓↓出てくるはずだったのですが・・・     品番のカウント| タイトル     ------------------------------        30   | テーブル1        20   | テーブル2        23   | テーブル3  6:結果は「From句の間違いです」と出ます。他の質問も見ましたが、自分のSQLのどこを直せば良いのかわかりません・・・教えてください!

  • クエリでカウントしつつ、チェックボックスを

    クエリでカウントしつつ、チェックボックスを使えるように(更新できるように)したいです。 アクセス2003です。 テーブル1(主キーなし) 名前   退職(Yes/No型) 佐藤   No 田中   No 佐藤   No から下のクエリを作りました。 SELECT テーブル1.名前, Count(テーブル1.名前) AS 名前のカウント, テーブル1.退職 FROM テーブル1 GROUP BY テーブル1.名前, テーブル1.退職; 結果、 名前 名前のカウント 退職 佐藤   2        No 田中   1        No となりますが、退職フィールドにチェックを入れることは出来なくなってしまいます。 カウントしつつ、更新可能なクエリにしたいのですが不可能でしょうか? 最終的には、このクエリ1をレコードソースとしてフォームに表示させたいです。 ご教示よろしくお願い致します。

  • Accessのクエリ

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

  • MS accessのクエリの作り方について

    お世話になります。 画像のようなテーブル1があり、 クエリ結果(1)、クエリ結果(2)を出力しようとしています。 どのようにクエリを作ればよいか教えていただけないでしょうか。 access2000を使用しております。 VB・SQLの知識がないため、クエリで作ろうとしています。 よろしくお願いします。