• ベストアンサー

集計クエリで

Access2002を利用しています。 集計クエリで、たとえば、商品ごとの重量*料金の合計(送料)を取りたいとした時、 フィールドの欄で、送料:Sum([重量]+[料金])で、集計を演算とするのと 送料:[重量]*[送料]として、集計で合計とするのでは、どうちがうのですか? 例がおかしいとおもうのですが、フィールドで集計関数を入れて、集計欄で演算とするのと、 フィールドに式を入れて、集計で合計とするのとどちらが正しいのか、またこの両者は違うのかを教えてください。

noname#9485
noname#9485

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

  • ベストアンサー
  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.1

この質問の例ではたまたま同じ結果になっただけでは? たとえば、 「重量」が小数点以下を含んだ数字で、 送料を求めるとき、1円未満の端数処理をしなければならない場合など、 結果に違いがでてくると思いますよ。 どっちが正しいというのよりも、 自分の求める演算方法に忠実な方を選択するべきでしょうね。

noname#9485
質問者

お礼

御礼が遅くなりありがとうございました。 端数がある値を利用して結果を確認してみます。

その他の回答 (1)

  • yomo3
  • ベストアンサー率32% (88/269)
回答No.2

kake_angelさん、こんばんは! happypointさんも、こんばんは! 結果が同じと言っても内部処理は大分違いますね。 フィールドに式を入れると、そのレコードごとの値を表示できるように、仮のテーブルを作成します。 Sum([重量]*[料金])のようにすると、取り急ぎ結果のみを追求できるので、Accessくんとしては、大分ラクです。 レコード数が膨大になるとこの差は結構大きいです。 happypointさんのご指摘の通り、小数点以下の処理など、レコードごとの処理が必要な場合は、QueryのFieldに計算式を入れる方がわかりやすいし有効ですが、集計結果のみ知りたいのでしたら、集計関数を使った方がよいでしょう。

noname#9485
質問者

お礼

御礼が遅くなりすみません。 レコードごとの処理が必要ならば・ もう一度確認してみます。

関連するQ&A

  • ms access クエリの集計について

    こんにちは ms accessのクエリで、文字列として入力されている数字を数値扱いに直してその合計を出そうとしているのですが、特定の値を指定して合計を出そうとすると値がマイナスになってしまいます。 例 式1:sum(val(nz[フィールド名]))=1) フィールドに1とあるレコードを足して合計を出す場合です。値がマイナスになってしまいます。nzは別のクエリ使用時に空欄があるとまずいので入れてあります。 左隣で別のフィールドでグループ化し、ここでは演算を選択しています。

  • Access クエリより集計という列の使い方

    単純な質問ですいません。 クエリで、Σマークをクリックすると集計という行が出て グループ化と表示されています。 このグループ化とはどういう意味でしょうか。 また、演算をかけてある列フィールドに対しては“演算”を選んだ方がいいのでしょうか。 とか、合計をかけてある列フィールドには“合計”を選んでおいたほうがよい?。。 ちょっとよくわかりません・・。

  • クロス集計クエリ

    アクセス2003です。 行見出しフィールドに「10人」となるように、 合計: [Qクエリ]![フィールド] & "人" としたのですが、 "人"が付きません。 (集計方法:カウントです) 不可能なのでしょうか?

  • Access:クエリーにて集計後に文字列結合したい。

    Accessのクエリーでレコードのグループ化を行っている状態で、あるフィールドに対してだけ文字列の結合を行いたいのですが、集計部分をどのように指定すればよいかわからず困っています。 イメージとしては、SQLビューにて、グループ化されたレコードの合計が、  SUM([テーブル名].[フィールド名]) で求められる様に、 エクセルの文字列結合関数  CONCATENATE([テーブル名].[フィールド名]) が使いたい、という感じです、、 Accessにおける文字列結合は"&"を使うとありましたが、この場合どのように記述するべきでしょうか?

  • ACCESSでのSUM関数ついて

    CS検定平成19年度版 データベース部門3級の問題を解いています。 http://8.dtiblog.com/t/tortue2006/file/20090301095722.pdf 課題7の5の問題がわかりません。 クエリで、SUM関数を使って、合計金額というフィールドを作成し、 「施術料金の合計」と「スタイリスト料金の合計」を合計するとあるのですが、 まず、集計行には、何を指定したらいいのでしょうか?(合計?演算?) 合計金額:SUM([施術料金の合計]+[スタイリスト料金の合計]) と入れると・・・ 「・・・集計関数は使用できません」とか 合計金額:[施術料金の合計]+[スタイリスト料金の合計] と入れれて集計行に「合計」を指定すると・・・ 「式に・・・サブクエリは使用できません」などが出ます。 基本がきちんと理解できていないようで、申し訳ないのですが 宜しくお願いします。

  • クエリで試験結果を個人ごとに集計したいのに??

    クエリで試験結果を個人ごとに集計したいのに?? Accessド素人です。例えば、商品別に売上金額の集計をしようとした場合、クエリで、「Σ」を押し、売上の合計欄を「グループ化」から「▼」から「合計」にすると商品ごとに集計が出る、と、思っています。 150人分の生徒の過去5回分の試験結果を集計したいのです。テーブルは「生徒マスター」「試験結果累積テーブル」ほかです。リレーションはうまくいってると思っています。 「Σ」ボタンを押して、試験の合計点数の「グループ化」を「合計」にして、「実行」したのですが、結局、個人ごとに集計できていないのです。何が間違っているのでしょうか? もしかして、大きな勘違いをしているのかも? とても心配です。どうか、よろしくお願いいたします。

  • Excelでの集計

    Aさん用ブック、Bさん用ブック、Cさん用ブック…と人数分+集計用のブックがあるとします。 それぞれのブックには共通の形式で下のようなシートが12枚、つまり1年分あります。   1月    1日  2日  3日…31日 合計    商品1   1              SUM式   商品2        1    1    SUM式   商品3   1              SUM式    …   商品30            2    SUM式   合計   SUM式………       SUM式      集計用のブック(形式は個人用と同じです)で日ごと・月ごとに全員の合計を取りたいのですが、 単純に「(商品数(約30)×毎日)×毎月」×人数でリンクを貼ると、ものすごい容量になってしまいます。 しかも、項目が多い割に殆んどが空欄なので、はっきり言ってムダです。 (1)集計用ブックの容量を出来るだけ軽くしたい(現在、個人用ブックは約130KBです)。 (2)リンク式(集計用の計算式)を出来るだけ単純にしたい。 (3)合計がゼロの欄は「0」を表示しない(「計算しない」ってのは矛盾してますよね?)。 こんな都合のいいことが、Excelで出来ますか?

  • Accessのクエリーで合計を出したい

    WinXPでAccess97を使用しています。 数値型のフィールドで、名前が「1」「2」・・・「50」とついてます。これをクエリーで、それぞれのフィールドの値を合計する演算フィールド「合計」を作成したいと思います。 「合計:[1]+[2]+・・・[50]」でもいいのですが、式が長くなります。ForNext文などVBAのループを使ってモジュールに記述して、合計を出す方法はありますか?

  • Accessのクエリによる集計が出来ない

    Accessのクエリによる集計が出来ない kamuycikapです。 OKWaveで様々な方のアドバイスを頂きながら、慣れないAccessと悪戦苦闘しております。 一昨日、計算したい表を作成する為にOKWaveに質問を載せました。 http://okwave.jp/qa/q5549286.html 無事に上記のアドバイスでリレーションのオプション設定を行い、集計計算したいクエリの結果を表示することが出来ました。 その表を元にして 下記の質問でアドバイス頂いた方法による集計を行おうとしたのですが、集計出来なくて困っています。 http://okwave.jp/qa/q5544785.html データベースの構成とキーは以下のとおりです。 --ここから <データベース構造:リレーションシップ> リレーションシップとテーブルの構成は下記の通りです。 -->がリレーションシップです。 Kがキーになります。 ■テーブルA      ■テーブルB    ■テーブルC    ■テーブルD K納品書コード --> K納品書コード --> K納品書コード  --> K納品書コード 仕入数          K商品コード  --> K商品コード   --> K商品コード                             K商品連番    --> K商品連番                             出品数量        K出品連番                             商品名           発送個数                             色             発送日付                             サイズ                             売値 ※テーブルCからテーブルDへのリレーションオプションを「’テーブルC’の全レコードと’テーブルD’の同じ 結合フィールドのレコードだけを含める。」としています。 <作りたいデータ> 納品書コード、商品コード、商品連番、商品名、色、サイズ、売値、仕入数、出品数量、発送個数、出品在庫数、倉庫在庫 <クエリ> ○グループ  納品書コード、商品コード、商品連番、商品名、色、サイズ、売値、仕入数、出品数量 ○合計(集計)  発送個数 ○出品在庫数(演算)  [出品数量]-[発送個数] ○倉庫在庫(演算)  [仕入数]-[発送個数] <データ状況> テーブルCのデータは約300レコードありますが、そのうち20件ほどしか商品が発送されていない為、テーブルDのデータは20件しかありません。 <望む結果> テーブルCのデータが全て表示され、紐つけられたテーブルDのデータがが存在する場合は、発送個数を表示し出品在個数を演算する。 演算した出品在個数を利用して、倉庫在庫も演算する。 <クエリの実行結果> テーブルCのデータが全て表示され、テーブルDに紐つけられたレコードも表示されるが、テーブルDに入力されている20件のデータが商品連番(テーブルCのフィールド)ごとに集計されない。 --ここまで <目的> お店に出品された商品は、日を分けて少しずつ売れていきます。(一日で全部売れることもありますが....) 従って、出品された商品(テーブルCのデータ)に対して売れていく数(テーブルDの複数のレコード)のデータがぶら下がっている形になります。 このようなデータベースですので、出品した商品が何個売れたかを計算する為には、商品に対する売れた個数を集計(合計)しなければなりません。 <結果> テーブルCの商品連番ごとの発送個数を集計したいのですが、テーブルDの出品連番ごとの集計になっている様子です。 <頂きたいアドバイス> 上記のデータベースとクエリで、テーブルCの商品連番に紐ついたテーブルDに格納されている発送個数の合計値を集計するための方法 以上、識者の方のアドバイスをお願い致します。

  • 演算フィールドが、パラメータクエリになってしまうのはなぜ?

    アクセス2003を使っているのですが、演算フィールドを作るために、フィールド名に[]を使うと、パラメータクエリとして動作してしまうのですがなぜでしょうか? 同じように作り直すと、正常に、演算フィールドとして、動作するのですが、パラメータクエリと演算フィールドの式は、同じ[]を使いますが、どこが違うと、どっちになるのでしょうか? 今は、作ってみないと、どっちになるかわかりません。

専門家に質問してみよう