• 締切済み

Access 2007でのクエリ集計で複数の条件を指定したい

はじめまして。 Access初心者です。 研究で23区の建物の集計を行っており、区名、建物面積、土地面積、建物階数、ある属性の有無(0,1)のデータがあります。(約計180万行) 区名とある属性の有無をグループ化、建物面積、土地面積を合計、あとカウントで集計を取りたいのですが、階数(0~69階まで)の条件の設定で手こずっています。 抽出条件を用いて、それぞれ1条件ずつ集計することはできました。 低層(0-2),中層(3-5),中高層(6-9),高層(10-)と4段階に分けたいのですが、1つのクエリで表すことは可能でしょうか? 結果できる行としましては、23×2×4=184行になる予定です。 よろしくお願いいたします。

みんなの回答

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

pirorin654です。 属性についてですが、 ある属性の有無(0,1) とされていますが、提示したSQL文ではテーブルの 属性はYes/No型にしています。したがってSQL文の 中では、(-1, 0)となっています。その点の確認 をしておいてください。

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

mhassyさんがお手本を示されているのでEndスレ に追いレスになりますが、部分集合の合計、 すなわち4つのものを取り出して足しあわ せば必要なものが求められるというごく 初歩的な考えです。もっとも24x2x4の2x4 が対象なので厳密には8つですね。 ネックになっている階層別にまずつくることはして いないのですか。普通に考えれば建物階数の抽出 条件にBetween 0 And 2 とか入れてみるものですが。 それをすれば何かに気付くはずです。その考えで 進めると以下のようになっていきます。 土地面積、建物面積の合計はどのような基準で行うのか わからないので、グループ化した状態で合計をします。 たとえば、低層ならば属性を考慮して、かつIDという オートナンバーをいれて、テーブル名をtblDATAとして、 ######################################### SELECT tblDATA.区名, Sum(tblDATA.建物面積) AS 建物面積の合計, Sum(tblDATA.土地面積) AS 土地面積の合計, tblDATA.属性, "低層" AS 階層, Count(tblDATA.ID) AS 個数 FROM tblDATA WHERE (((tblDATA.建物階数) Between 0 And 2)) GROUP BY tblDATA.区名, tblDATA.属性, "低層" HAVING (((tblDATA.属性)=0)); ######################################### SELECT tblDATA.区名, Sum(tblDATA.建物面積) AS 建物面積の合計, Sum(tblDATA.土地面積) AS 土地面積の合計, tblDATA.属性, "低層" AS 階層, Count(tblDATA.ID) AS 個数 FROM tblDATA WHERE (((tblDATA.建物階数) Between 0 And 2)) GROUP BY tblDATA.区名, tblDATA.属性, "低層" HAVING (((tblDATA.属性)=-1)); ######################################### の二つのクエリを作ります。これらを各階層ごとに "低層" AS 階層 と WHERE (((tblDATA.建物階数) Between 0 And 2)) の階数を変化させたもの、および HAVING (((tblDATA.属性)=-1)) の属性を変化させたものを2つづつ作ります。 これらのクエリはそれぞれが属性と階層で分けられて いるので、これらを足せばデータが得られる ということになります。 それらをUNIONクエリの中でつなげればデータが一応でます。 つまり、 SELECT ・・・・・・・・・・・ UNION SELECT ・・・・・・ UNION SELECT ・・・・・・ UNION SELECT ・・・・・・ ・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・ UNION SELECT ・・・・・・; のような構文です。以下全文。 ########################################## SELECT tblDATA.区名, Sum(tblDATA.建物面積) AS 建物面積の合計, Sum(tblDATA.土地面積) AS 土地面積の合計, tblDATA.属性, "低層" AS 階層, Count(tblDATA.ID) AS 個数 FROM tblDATA WHERE (((tblDATA.建物階数) Between 0 And 2)) GROUP BY tblDATA.区名, tblDATA.属性, "低層" HAVING (((tblDATA.属性)=0)) UNION SELECT tblDATA.区名, Sum(tblDATA.建物面積) AS 建物面積の合計, Sum(tblDATA.土地面積) AS 土地面積の合計, tblDATA.属性, "低層" AS 階層, Count(tblDATA.ID) AS 個数 FROM tblDATA WHERE (((tblDATA.建物階数) Between 0 And 2)) GROUP BY tblDATA.区名, tblDATA.属性, "低層" HAVING (((tblDATA.属性)=-1)) UNION SELECT tblDATA.区名, Sum(tblDATA.建物面積) AS 建物面積の合計, Sum(tblDATA.土地面積) AS 土地面積の合計, tblDATA.属性, "中層" AS 階層, Count(tblDATA.ID) AS 個数 FROM tblDATA WHERE (((tblDATA.建物階数) Between 3 And 5)) GROUP BY tblDATA.区名, tblDATA.属性, "中層" HAVING (((tblDATA.属性)=0)) UNION SELECT tblDATA.区名, Sum(tblDATA.建物面積) AS 建物面積の合計, Sum(tblDATA.土地面積) AS 土地面積の合計, tblDATA.属性, "中層" AS 階層, Count(tblDATA.ID) AS 個数 FROM tblDATA WHERE (((tblDATA.建物階数) Between 3 And 5)) GROUP BY tblDATA.区名, tblDATA.属性, "中層" HAVING (((tblDATA.属性)=-1)) UNION SELECT tblDATA.区名, Sum(tblDATA.建物面積) AS 建物面積の合計, Sum(tblDATA.土地面積) AS 土地面積の合計, tblDATA.属性, "中高層" AS 階層, Count(tblDATA.ID) AS 個数 FROM tblDATA WHERE (((tblDATA.建物階数) Between 6 And 9)) GROUP BY tblDATA.区名, tblDATA.属性, "中高層" HAVING (((tblDATA.属性)=0)) UNION SELECT tblDATA.区名, Sum(tblDATA.建物面積) AS 建物面積の合計, Sum(tblDATA.土地面積) AS 土地面積の合計, tblDATA.属性, "中高層" AS 階層, Count(tblDATA.ID) AS 個数 FROM tblDATA WHERE (((tblDATA.建物階数) Between 6 And 9)) GROUP BY tblDATA.区名, tblDATA.属性, "中高層" HAVING (((tblDATA.属性)=-1)) UNION SELECT tblDATA.区名, Sum(tblDATA.建物面積) AS 建物面積の合計, Sum(tblDATA.土地面積) AS 土地面積の合計, tblDATA.属性, "高層" AS 階層, Count(tblDATA.ID) AS 個数 FROM tblDATA WHERE (((tblDATA.建物階数) Between 10 And 63)) GROUP BY tblDATA.区名, tblDATA.属性, "高層" HAVING (((tblDATA.属性)=0)) UNION SELECT tblDATA.区名, Sum(tblDATA.建物面積) AS 建物面積の合計, Sum(tblDATA.土地面積) AS 土地面積の合計, tblDATA.属性, "高層" AS 階層, Count(tblDATA.ID) AS 個数 FROM tblDATA WHERE (((tblDATA.建物階数) Between 10 And 63)) GROUP BY tblDATA.区名, tblDATA.属性, "高層" HAVING (((tblDATA.属性)=-1)); ############################################## 何か違っていたらいじくってみてください。 23x2x4=[東京23区]x[属性]x[階層]=184・・・・・・。

全文を見る
すると、全ての回答が全文表示されます。
  • mhassy
  • ベストアンサー率43% (16/37)
回答No.1

>(全ての条件を満たし?)1つのクエリで表すことは可能でしょうか? 可能・不可能(Yes/No)の御質問をされておりますので・・・ 可能というのが「御質問の答え」になります。 御質問の主旨は、「可能ならば教えて頂きたい」ということだと推測しますので、余談として記入します。 作成環境は・・・Access2003 SP3  御説明の各項目のデータ属性に関して、具体的な御説明が無いため、これも推測で設定しています。 ※特に要となる「階数」のデータ形式が不明なので、「単なる数値(階数)のみ」として扱います。 「階数」を範囲指定&グループ化する方法は、 クエリ作成画面で、空行の「フィールド」欄を右クリックし「ビルド」を選択。 式ビルダ内で・・・ 階層: Switch((住所一覧!階数<=2),"低層",(3<=住所一覧!階数 And 5>=住所一覧!階数),"中層",6<=住所一覧!階数 And 9>=住所一覧!階数,"中高層",10<=住所一覧!階数,"高層") ・・・と記述し、集計欄を「グループ化」指定。 添付画像のクエリを、SQLビューで表示すると以下の様になります。 SELECT 住所一覧.区名, Switch((住所一覧!階数<=2),"低層",(3<=住所一覧!階数 And 5>=住所一覧!階数),"中層",6<=住所一覧!階数 And 9>=住所一覧!階数,"中高層",10<=住所一覧!階数,"高層") AS 階層, 住所一覧.属性, Sum(住所一覧.建物面積) AS 面積の合計, Sum(住所一覧.土地面積) AS 土地面積の合計, Count(住所一覧.ID) AS IDのカウント FROM 住所一覧 GROUP BY 住所一覧.区名, Switch((住所一覧!階数<=2),"低層",(3<=住所一覧!階数 And 5>=住所一覧!階数),"中層",6<=住所一覧!階数 And 9>=住所一覧!階数,"中高層",10<=住所一覧!階数,"高層"), 住所一覧.属性; ちなみに・・・ 対象データの組み合わせ数が多いため、大したデバッグはしていませんので、不備がある場合には御自身で修正して下さい。 こういった技術的なカテでの質問時には「自分が作る(または回答する)場合」を想定し、必要な情報を記入する(≠曖昧)ようにしないと、良くても曖昧な回答しか得られません。 あげ足を取られる様な文章での質問は、回答側へ「質問者の意図と違う解釈をさせる」ことになり、善意でくれる回答側へ無駄な労力をかけさせることになり、恩を仇で返す非常識な結果になります。 (御説明の主旨から、本来の質問部分を推測しての回答ですので、的を外した説明部分があるかも知れませんが、)質問者さんの「記入した質問」への回答+その証明・・とも解釈できる回答を寄せます。

参考URL:
http://www.accessclub.jp/
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Accessのレポートの集計に条件をつけたい

    いつもお世話になります。 Access2010でレポートでの集計を行う際に条件をつけるには、どうすればよいか 教えて下さい。 レポートを作成した際、販売店コードでグループ化しています。 その中で消費者コードのレコードをカウントし、販売店コードフッターでカウント数を プリントしています。 このレコード数をカウントする際に、すべてのレコードではなく、そのレコード内にある 売上額の欄が0円より大きい(売上がある)消費者の件数をカウントするようにしたいと 考えています。 明細行には売上のない消費者もプリントされるため、プリントされる行数とカウント数は 異なってきますが、それはかまいません。 また売上がない消費者も含めた全レコード数も必要ありません。 このような条件を指定するにはどうすればよいでしょうか? よろしくお願いします。

  • 用途地域の規定について教えてください

    気に入った土地が見つかり購入しようか検討していますが、下記のことが気になっています。詳しい方教えてください。 その土地は東南8MT道路に接道しています。用途地域は第一種低層住居地域です。 そして、この物件の道を挟んで向かい側は第二種中高層住居地域です。 現在、向かい側の地域には2階建ての一戸建て住宅が建っていますが、その南側の地域に国道が通る予定になっているので、いずれ辺り一帯が買収されマンションなど高さのある建物が建てられる可能性もあります。そこで教えていただきたいのですが、もしそこに高層の建物を建てる場合、建築主は第二種中高層の規定に基づいて建てると思いますが、北側斜線の規定は一種低層地域の規定で建てもらえるのでしょうか。 よろしくお願いいたします。

  • アクセスで、条件を付けてカウントしたいです。

    アクセスで、条件を付けてカウントしたいです。 前回こちらで助けていただきました。 http://okwave.jp/qa/q5906286.html おかげで、ほしかったデータベースを作ることができとても感謝しております。 今回、そのデータベースを使い集計している最中に戸惑ってしまう点があり 再度質問させていただきます。 できあがったデータは、添付の画像のようになっています。 そこから来店回数ごとに○×をカウントしたいです。 たとえば、 1回の来店者でAの購入者は5人、Bの購入者は6人、Cの購入者は3人 といったように、一つのクエリで作成したいです。 http://mar1224.fc2web.com/site/access_index03.html こちらのように集計をカウントにして、○×の個数を出すことはできたのですが 一回の集計で複数の商品の購入の有無をデータ化することができませんでした。 目指すものとしては下記のようなデータにしたいです。 来店回数     A購入     B購入     C購入     D購入  1回      80人      90人      53人     24人        2回      70人      100人      74人     55人   3回      93人      44人      42人     77人   4回      55人      63人      23人     66人   5回      80人      90人      53人     24人   6回      80人      440人      52人     24人  Dcount関数を使ってみたのですが うまくいきませんでした。 ちなみに使った式としては A購入= DCount("名前", "3月の来店者データ", "A購入='○'") こちらにすると来店回数とうまく紐づけられませんでした。(トータルの○の個数が出てしまいます。) こちら初歩的な質問で申し訳ございませんが、 アドバイスいただけると幸いです・・・涙 よろしくおねがいいたします。

  • 下記の条件で何処まで広い家を建てれるのでしょうか?

    土地面積:133坪 建ぺい率:45% 容積率:60% 用途地域:第一種低層住居専用地域 上記の条件で地下、地上、横、縦、どこまで大きな家が建てれるでしょうか?

  • アクセスで2種類の範囲での絞り込み方法を教えてください。

    アクセス2000で不動産のデータベースを作っています。 地域・種類(マンション等)・条件(賃貸等)・土地面積・建物面積から絞り込みたいです。 今のところ、地域・種類・条件までは抽出できるようになっていますが、更に、土地面積を範囲で絞り込み、その上、更に建物面積で絞り込みを行えるようにしたいのです。 クエリとフォームの設定をどうしたらよいのかを教えてください。 申し訳ありませんが、初心者向けで教えてくださると助かります。 よろしくお願いします。

  • クロス集計クエリのフォーム表示と年月入力の自動化

    [クロス集計にトライ中] 日々作成しているデータを集計する作業「今まではデータをひらすら記録し再利用に特化」にトライしましたが、次に進めない状況に陥っております。クロス集計はウィーザードを使って作成しました。下記にて現状を紹介させていただきますので、アドバイスをお願いいたします。 [やりたいこと] 1、クロス集計の結果を単票フォームで表示させたいと思っています。アドバイスをお願いします。 2、今後、クロス集計等のACCESS集計の取組を効率的に進めたいのでアドバイスをお願いします。 フィールドの購入日はカレンダー入力「0000/00/00」を使って手動でテーブルに書き込んでいます。この入力結果「0000/00/00」を参照させるなどして、テーブルの購入月フィールドに自動で書込めればと思っています「0000/00または0000年00月」。データ入力フォームには表示させなくてもいいと考えています。。 ◆対象オブジェクト 【テーブル】 名前:T_食材管理 「フィールド名(クロス集計利用フィールドのみ抜粋)」 ID:オートナンバー 購入日:カレンダー機能で入力「0000/00/00」 購入月:手入力「0000年00月」※集計を考えて直近で追加したフィールド 消費:(Yes・No)型 食材名:天ぷら・卵・漬物・etc 【クロス集計クエリ(2種類作成)】 名前1:Q_食材管理のクロス集計_購入「フィールド名はクエリを確認してそのまま記載」 (購入月と食材名だけで出来そうに思っていましたが、ウイザードが進めずIDを追加しました) 「選択フィールド」 ・食材名=グループ化(行見出し) ・購入月=グループ化(列見出し) ・ID=カウント(値) ・ID=カウント(行見出し) 名前2:Q_食材管理のクロス集計_消費「フィールド名はクエリを確認してそのまま記載」 (購入月と食材名だけで出来そうに思っていましたが、ウイザードが進めずIDを追加しました) 「選択フィールド」 ・食材名=グループ化(行見出し) ・購入月=グループ化(列見出し) ・消費=グループ化 ・ID=カウント(値) ・ID=カウント(行見出し) ・消費=Where 条件「抽出条件(Yes)」 以上ですが、不慣れもあり情報不足がありましたらご指摘願います。

  • 日影について

    家を建てようと思い土地探しをしています。 いい土地がいくつか見つかったら建築士さんを探して相談し 最終的に、どの土地にするか決定しようと考えています。 その前に、独学で勉強してみたのですが わかりませんので教えていただけないでしょうか・・ 宜しくお願いします。 南側が道路(幅6m)の土地で、西側の隣地境界線が、用途地域の境(隣地の土地が近隣商業地域で、こちらの土地が第1種低層住居地域)になっているのですが、隣の近隣商業地域側は建物高さ<10mなら日影の対象にならないのでしょうか? ネットで調べてみると日影が日影時間の制限の異なる区域に落ちる場合は、各区域の制限も受けるとありまました。 第1種低層地域側に影が落ちる場合に近隣商業地域の建物は軒高>7m又は地上階数≧3(こちら側(第1種低層地域)は軒高>7m又は地上階数≧3の場合に対象になるのに・・・)で対象にならないのでしょうか? 今は、2階建ての低い家が建っているのですが、将来、高い建物が建つのが可能だと思うと・・・考えてしまいます。 宜しくお願いします。

  • この条件で何坪の家どんな家が建築できますか?

    下記の条件で最大どのくらいの家を新築できますか? 土地面積436.82m2 市街化区域 容積率60% 建ぺい率40% 一種低層 宅地 下水道なし また下水道を敷地に引き込む時はどのくらい費用が必要ですか?

  • 中古戸建の購入を検討してます。

    条件は以下のとおりです。 2階建て 土地59平米 建て面積58平米 2004年築 一種低層 準防火地区 高度利用地区 建ぺい率50% 容積率100% 再建築不可(43条ただし書きの許可をとれば再建築可) 北側4m道路に接道5.2m 景観法の規制あり 懸念されることはありますか? 留意すべき点はありますか? 住宅街で一種低層なのに高度利用地区です。どういうことでしょうか?(一種低層や高度利用地区自体の意味はわかります。) いつか都市計画にかかって土地を手放さなければならなかったり周りが高層ビル群になってしまう可能性はありますか? なんでも良いのでアドバイスお願い致します。

  • 第一種中高層住居専用地域における兼用住宅の制限

    建築基準法の詳細について教えてください。 第一種中高層住居専用地域に兼用住宅を建てる場合の条件についてです。 Wikipediaで「第一種中高層住居専用地域」を検索すると下記の記述が見つかります。 ============================== ・兼用住宅で、非住宅部分の床面積が、50平米以下かつ建築物の延べ面積の  1/2未満のもの - ○ ・兼用住宅の非住宅部分の用途規制については、第一種低層住居専用地域の ものと同等。 ============================== しかし色々なHPを見たところ、「非住宅部分の床面積が、50平米以下」という部分はあくまで兼用住宅を第一種低層住居専用地域に建設する場合の制限に過ぎず、第一種中高層住居専用地域に建設する場合、店舗部分は、建築基準法「別表第2」の(は)にある「5.店舗、飲食店その他これらに類する用途に供するもののうち政令で定めるものでその用途に供する部分の床面積の合計が500平方メートル以内のもの(3階以上の部分をその用途に供するものを除く。)」を満たせば良く、さらに住居部分も「建築物の延べ面積の1/2未満」である必要性もない、という回答も見ました。 どちらが正解でしょうか?

専門家に質問してみよう