サブクエリを使用した演算について

このQ&Aのポイント
  • サブクエリはクエリの中にもう一つクエリを内包するということです。例えば、全体からのパーセントを出したい場合、サブクエリ内で全体の合計を計算し、それを現在のクエリで使用することができます。
  • ただし、抽出には使えますが、演算結果を直接使うことはできません。
  • したがって、演算結果を利用する場合は、複数のクエリを作成する必要があります。
回答を見る
  • ベストアンサー

ACCESS 演算について

サブクエリはクエリの中にもう一つクエリを内包するということのようですが、例えば全体からのパーセントを出したい場合、 サブクエリ内で全体の合計を計算し、それを現在のクエリ?に使用することはできるのでしょうか? 抽出には使えるようですが、演算結果を使うことはできないですかね。 クエリを二つ作らなければ駄目でしょうか? SELECT Sum(テーブル1.ボール金額) AS ボール金額の合計 FROM テーブル1; ↑が合計 ↓がボールのブランドごとに集計した合計(ボールのブランドテーブルをテーブル1と店コードで繋いでいます。) SELECT ボール.ブランド, Sum(Int([ボール金額]*([ボール]![シェア]/100)+0.5)) AS ブランド別ボール FROM ボール INNER JOIN テーブル1 ON ボール.店コード = テーブル1.店コード GROUP BY ボール.ブランド; 最終的 シェア: Int(ブランド別ボールの金額/ボール金額の合計*1000+0.5)/10

  • sskj
  • お礼率24% (75/303)

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

サブクエリはテーブル名にも使えます。 例えば、テーブルに"金額"が登録されているとき、合計金額に対するパーセントをクエリで表示するには、 SELECT 金額, 金額/金額計 AS % FROM テーブル, (SELECT SUM(金額) AS 金額計 FROM テーブル);

sskj
質問者

お礼

色々試行錯誤した結果できました。 回答ありがとうございました。

関連するQ&A

  • アクセス クロス集計クエリ 縦の合計

    テーブル1には 会社名 取引日 金額 A社 2014/01/01 ¥100 B社 2014/01/02 ¥200 A社 2015/01/01 ¥500 というデータがあります。 このテーブル1を基にクロス集計クエリで TRANSFORM Sum([テーブル1].[金額]) AS 金額の合計 SELECT [テーブル1].[会社名], Sum([テーブル1].[金額]) AS [合計 金額] FROM テーブル1 GROUP BY [テーブル1].[会社名] PIVOT Format([取引日],"yyyy"); というクエリを自動生成しました。 この時、横の合計ではなく縦の合計(年ごとの合計)を表示するには良いでしょうか? サブクエリというのを使うようですが、どうすればいいかわかりませn。 よろしくお願いします。

  • アクセス:クロス集計の抽出条件

    添付のようなテーブルがあり下記のSQLを実行するとクエリ1になるのですが、合計数に抽出条件を入れてクエリ2のように10個以下のものは表示しないようしたいと思います。 下記SQLをどのように直したらよいでしょうか。一つのクエリで行う方法を教えて下さい。 TRANSFORM Sum([テーブル1].個数) AS 個数の合計 SELECT [テーブル1].[くだもの], Sum([テーブル1].個数) AS 合計 FROM テーブル1 GROUP BY [テーブル1].[くだもの] PIVOT [テーブル1].月;

  • アクセスについて

     *テーブルB    *テーブルA      店番←------販売店番号       店名       商品番号                 販売金額    *テーブルC             商品番号----→商品番号            詳細       商品名            販売日      手数料 リレションシップをしております。 クエリA 店名-商品番号-販売金額-商品名-詳細-手数料金額-販売日 といったクエリをつくりました。 ---------OKウェーブさんからの回答--------------- 「商品」テーブルに 店名 - 商品 - 金額 A店 - 宝石 - 1000 B店 - 時計 - 2000 A店 - 宝石 - 3000 B店 - バック - 4000 ・・・ と格納されているとします で、これらを集計する為に使用するものは、選択クエリ(集計)を使用します 下記にクエリのSQL文を記述します SELECT 商品.店名, Sum(IIf([商品名]="宝石",[金額],0)) AS 宝石合計, Sum(IIf([商品名]="その他",[金額],0)) AS その他合計, Sum(商品.金額) AS 合計, Sum(IIf([商品名]="バック",[金額],IIf([商品名]="時計",[金額],0))) AS 合計A, Sum(IIf([商品名]="その他",[金額],IIf([商品名]="宝石",[金額],0))) AS 合計B FROM 商品 GROUP BY 商品.店名 ORDER BY 商品.店名; ------------------------------------------------- どこの画面でSQL文を記述すえばよろしいのでしょうか。 どこかわかりやすいHPはないでしょうか お願いします。

  • Accessについて

    現在、Access2000を使っています。 初心者で勉強しながら、作っているのですが、どうしても 分からない部分があるので、どなたか教えて下さい。 毎日2回、あるデータを取っています。テーブルAには、 [記録日][aデータ][bデータ] で作ってあります。このテーブルのデータから、グラフを作りたく、 ウィザードを使って作り完成しました。 しかし、同じテーブル構造で、もう一つテーブルBがあります。 (後々、このテーブルがもう少し増えそうです) このテーブルを使って同じようにグラフを作りたく、同じように ウィザードから作ればよいのですが、後々のメンテなどを考えると、 同じ修正を複数作り直すのでは大変なので、モジュールの中で ケース文で分けようと思います。 グラフのプロパティを見ると、 「値集合ソース」に SELECT (Format([記録日],"DDDDD")) AS 式1, Sum([aデータ]) AS aデータの合計, Sum([bデータ]) AS bデータの合計 FROM テーブルA GROUP BY (Format([記録日],"DDDDD")), (Int([記録日])); となってたので、モジュールの中で、 Me.グラフ名.RowSource = "SELECT (Format([記録日],""DDDDD""")) AS 式1, Sum([aデータ]) AS aデータの合計, Sum([bデータ]) AS bデータの合計 FROM テーブルA GROUP BY (Format([記録日],""DDDDD"")), (Int([記録日]));" と書いたのですが、実行するとここで下記のようなエラーになってしまいます。 「指定した式に、RowSourceプロパティに対する不正な参照が含まれます。」 モジュールからは「値集合ソース」(RowSource) にはセット できないのでしょうか? 詳しい方、どうか回答をお願い致します。

  • 更新クエリで合計金額を入れたい

    アクセスのテーブル1を作成しました。 ID    日付    金額    合計金額 1     6/1     ¥100 2     6/1     ¥200 3     6/2     ¥150 4     6/2     ¥300 (合計金額はカラ) そして、日別の合計を出すクエリ1を作成しました。 SELECT [テーブル1].日付, Sum([テーブル1].金額) AS 金額の合計 FROM テーブル1 GROUP BY [テーブル1].日付; 元のテーブルの合計金額の列に、クエリで表示した金額の合計を更新クエリで入れようとすると、 「 更新可能なクエリであることが必要です。」となります。 更新クエリのSQL文は UPDATE クエリ1 INNER JOIN テーブル1 ON [クエリ1].日付 = [テーブル1].日付 SET [テーブル1].合計金額 = [クエリ1]![金額の合計]; です。 ヘルプの内容の 一対多リレーションシップの '一' 側のフィールドを更新するクエリを実行しようとしました。 読み取り専用で開いているデータベースのクエリで、古い OpenQueryDef メソッドで使用しています。 には該当してないのですが(リレーションシップを組んでないし、四方チリ専用で開いてないし) どうすれば元のテーブルに合計金額を入れられるのでしょうか? 結果的に ID     日付     金額     合計金額 1     6/1     ¥100     300 2     6/1     ¥200     300 3     6/2     ¥150     450 4     6/2     ¥300     450 にしたいです。

  • Access 意図しないパラメータ入力

    クエリを作成中なのですが、意図しないパラメータ入力ボックスが表示されます。 テーブルでは店マスタを一側 それ以外の項目が多側になっています。 エクセル用に横並びにするため多側を抽出条件で各項目ごとにクエリを作成しました。 これを一まとめのクエリにしようとしましたが項目が10以上あり クエリが複雑すぎる、ということで二つに分けようとしたのですが 二つ目のクエリでなぜかパラメータ入力が表示されます。 抽出条件は指定していません。 なぜこのようなことになるのでしょうか? 店マスタはテーブルのものを使用。 ゴルフ、球技ボール・・・は多テーブルから各条件を指定し抽出したクエリ。 SELECT ■店マスタ.店コード, ゴルフ.*, 球技ボール.*, 釣.*, 登山・アウトドア.*, 海・水中.*, 武道.*, その他.*, 合計.* FROM (((((((■店マスタ INNER JOIN ゴルフ ON ■店マスタ.店コード = ゴルフ.店コード) INNER JOIN 球技ボール ON ■店マスタ.店コード = 球技ボール.店コード) INNER JOIN 釣 ON ■店マスタ.店コード = 釣.店コード) INNER JOIN 登山・アウトドア ON ■店マスタ.店コード = 登山・アウトドア.店コード) INNER JOIN 海・水中 ON ■店マスタ.店コード = 海・水中.店コード) INNER JOIN 武道 ON ■店マスタ.店コード = 武道.店コード) INNER JOIN その他 ON ■店マスタ.店コード = その他.店コード) INNER JOIN 合計 ON ■店マスタ.店コード = 合計.店コード;

  • クエリで日付ごとに金額で集計したいのに

    サンプルで、テーブルに 日付    金額 2013/06/01    ¥1,000 2013/06/02    ¥1,500 2013/06/01    ¥2,000 というデータを作って、 SELECT [テーブル1].日付, Sum([テーブル1].金額) AS 金額の合計 FROM テーブル1 GROUP BY [テーブル1].日付; このようなクエリを作ると、 日付    金額の合計 2013/06/01    ¥3,000 2013/06/02    ¥1,500 こうなりますよね。 実際のデータで、日付と金額のフィールドだけ、テーブルから持ってきて、 日付はグループ化、金額は合計にしてるのに、 日付がグループ化されていません。 図を見てもらえばわかると思いますが、同じ日なのに合計額が合算されていません。 なぜなのかわかりません。 元のテーブルは、日付は日付型、金額は通貨型です。 サンプルと同じです。 よろしくお願いします。 他のフィールドに主キーがあります。

  • Access ユニオンクエリについて・・・・

    顧客管理作成中です。 テーブル:顧客dataの項目(フィールド名)に 顧客名をはじめとして、 入金予定日,入金予定額,入金日,入金額,クレジット入金日,クレジット入金額とあります。 それぞれ、日付が違うのですが、日々の流れをチェックできるよう、 日付でまとめたいのです(日々の金額は日計) 希望の形は 日付 入金予定額   入金額   クレジット入金額 11/1  11/2 11/3   ・   ・   ・ _____________________ 月合計 _____________________ 全体合計 まず、グループ化したクエリを3つ作り、その後 ユニオンクエリを作って見ましたが、合計の作り方がわかりません。 ★作成状況★ ■グループ化した3つのクエリを作成 (1)Q名・支払予定金額(入金予定日,入金予定額の合計) (2)Q名・入金     (入金日,入金額の合計) (3)Q名・クレジット   (クレジット入金日,クレジット入金額の合計) ■ユニオンクエリ SELECT 日付,支払予定金額の合計,0 as 金額の合計,0 as クレジット入金額の合計 FROM 支払予定金額 UNION SELECT 日付,0 as 支払予定金額の合計,金額の合計,0 as クレジット入金額の合計 FROM 入金 UNION SELECT 日付,0 as 支払予定金額の合計,0 as 金額の合計,クレジット入金額の合計 FROM クレジット; はじめて、ユニオンクエリを使ったので、わからないことだらけです。。。 どなたか手を貸してください(-"-;) 宜しくお願いいたします

  • viewでfrom句にサブクエリが書けない

    こんにちは。MYSQLのVIEWの代替についてお教え下さい。 下記でinner joinについて教えて頂きました。 http://okwave.jp/qa/q7296711.html 環境はWin 7 MYQL5です。 t1テーブルのデータ ID,在庫 001,22 t2テーブルのデータ ID,出庫 001,17 001,3 SELECT A.z AS `在庫`,B.* FROM (SELECT SUM(stock) AS z FROM t1 WHERE id='001' GROUP BY id) A INNER JOIN t2 B ON A.id=B.id というコードで、それぞれのテーブルをグループ化してグループ化したもの同士をJOINしました。 このコードを元にVIEWを作り、そのVIEWを対象にクエリを作ろうと考えていました。 しかしながら、MYSQLのVIEWではFROM句でサブクエリは使えませんでした。 http://www.klab.jp/media/mysql/index4.html 上記のコードを書きなおして、なんとしてもVIEWで利用したいのですが、FROM句でサブクエリを使わずにVIEWを作成する方法がわかりません。 どのようにリライトすればよいか、ご助言お願い致します。

    • ベストアンサー
    • MySQL
  • Access select句でのサブクエリ

    Access2010でのサブクエリについてお教えください。 注文テーブル 商品コード,数量,フラグ A,3,x B,2,x C,1,x A,3,y B,4,y C,3,y このようなテーブルがあります。 SELECT 商品コード,数量 FROM 注文テーブル GROUP BY 商品コード A,6 B,6 C,4 やりたい事はフラグがxの数量も表示たいと思っています。結果としては、下記の結果が欲しいです。 A,6,3 B,6,2 C,4,1 select句でサブクエリを作りました。 SELECT 商品コード,数量,(SELCT 数量 FROM 注文テーブル WHERE フラグ='x' GROUP BY 商品コード) FROM 注文テーブル GROUP BY 商品コード しかしこのコードを実行すると、「このサブクエリでは1つのレコードしか返せません」と表示されます。 どこを修正したら正しいデータを取得することができるでしょうか?

専門家に質問してみよう