アクセス総量の計算方法。 クエリを使用してデータをカウントします。 レポートに追加できる集計の種類

02.05.2022

Access の [合計] 行を使用すると、テーブルの列のデータの概要をすばやく表示できます。 たとえば、購入を含むテーブルに合計行を追加すると、売上の合計を表示できます。 総数商品の単位または購入された商品の数。

注記:列の値の合計を表示するには、列のデータ型を数値、分数、または通貨に設定する必要があります。 数値以外の列の場合、値の数の概要タイプのみを選択できます。

「合計」行の追加

トータルタイプの選択

行を追加した後 結果各列に表示される合計のタイプを選択します。 たとえば、データ型が数値、10 進数、通貨の場合、合計などの集計を表示できます。 データ型がテキスト値の場合、値のカウントが可能です。

この例のテーブルに列の値の合計を表示させてみましょう 購入価格そして 購入したアイテムそして列の合計 位置、下の画像に示すように。

Sum およびその他の集計関数の仕組み

集計関数はデータの列に対して計算を実行し、単一の結果を返します。 これらは、合計や平均などの単一の値を計算する必要がある場合に役立ちます。 集計関数はデータの列に適用されることに注意してください。 当たり前のことのように思えるかもしれませんが、データベースを設計して使用するときは、通常、ユーザーがフィールドにデータを入力し、カーソルを右または左に移動してデータを入力できるように、データの行と個々のレコードに焦点を当てます。 次のフィールド逆に、列内のレコードのグループに焦点を当てて集計関数を使用します。

Access を使用して販売データを保存および追跡するとします。 集計関数を使用すると、1 つの列で販売されたアイテムの数、2 番目の列で合計売上高、3 番目の列で各アイテムの平均売上を計算できます。

次の表では、[合計] 行で使用できる Access 集計関数について説明します。 Access には他にも集計関数がありますが、それらはクエリで使用されることに注意してください。

関数

説明

サポートされているデータ型

「合計」ラインで利用可能ですか?

列の平均値を計算します。 列には、数値、通貨、または日付または時刻の値が含まれている必要があります。 この関数は空の値を無視します。

値の数

列内の要素の数をカウントします。

複数値リスト列などの複雑な繰り返しスカラー データを除くすべてのデータ型。 複数値リストの詳細については、複数値フィールドのチュートリアルの「複数値フィールドの作成と削除のベスト プラクティス」を参照してください。

最大値

最も高い値を持つ要素を返します。 テキスト データの場合、最大値はアルファベットの最後の値であり、Access では大文字と小文字が区別されません。 この関数は空の値を無視します。

、「日付と時刻」

最小値

最小値の要素を返します。 テキスト データの場合、最小値は最初のアルファベット値であり、Access では大文字と小文字が区別されません。 この関数は空の値を無視します。

「数値」、「実数」、「通貨」、「日付と時刻」

標準偏差

「数値」、「実数」、「通貨」

列内の要素を合計します。 数値データと金銭データのみに適しています。

「数値」、「実数」、「通貨」

分散

列内のすべての値の統計的分散を計算します。 数値データと金銭データのみに適しています。 テーブルに含まれる行が 2 行未満の場合、Access は空白の値を返します。 Variance 関数の詳細については、次のセクションを参照してください。

「数値」、「実数」、「通貨」

標準偏差関数と分散関数の詳細については、こちらをご覧ください。

機能 標準偏差そして 分散統計値が計算されます。 特に、平均値の近くにあり、正規分布の法則に従う (ガウス曲線上にある) 値に使用されます。

同じ機械で製造された 10 個の工具をランダムに選択し、機械検査と品質管理のためにその破壊強度を測定したとします。 平均破壊強度を計算すると、ほとんどの工具の破壊強度が平均に近いことがわかりますが、値が高い工具や低い工具もあります。 ただし、平均破壊強度値のみを計算した場合、この数値からは品質管理の有効性に関する情報は得られません。これは、いくつかの異常に強いまたは脆い工具によって平均値が増減する可能性があるためです。

機能 変動性そして 標準偏差値が平均にどの程度近いかを示すことで、この問題を示します。 クリティカル強度については、関数の 1 つによって返される数値が小さいほど、生産プロセスが正常に動作していることを示します。ただし、一部のレベルは限定的であり、平均を上回るか下回る場合があります。

詳細な説明分散と標準偏差はこの記事の範囲外です。 両方の機能の詳細については、統計 Web サイトをご覧ください。 機能を使用する場合 分散そして 標準偏差次のルールを覚えておいてください。

SQL クエリを使用せずに Microsoft Access データベース テーブルの合計金額を計算する例

データベーステーブルでは、特定の列の数値の合計を計算する必要がある場合があります。 これにはさまざまな計算方法がありますが、そのうちの 1 つは以下に基づいています。 適切な SQL クエリを使用する.

このタスクでは、例として Microsoft Access テーブルを使用し、SQL クエリを使用せずに合計金額を計算します。 さらに、指定された列のセルの値の算術平均が計算されます。

使用する この例を使用すると、特定の列の複数のレコードに対して任意の数値計算を作成できます。

問題の状態

その結果、ADOConnection1 コンポーネント内に ConnectionString が形成されます (図 2)。 この行では、データ プロバイダーの種類とデータベース ファイルへのフル パスを指定します。

米。 2. ADOConnection1 コンポーネントの ConnectionString

  1. コンポーネントのセットアップ ADOConnection1、ADOTable1、DataSource1、DBGrid1。

データベース テーブルを表示するには、次のコンポーネント プロパティを構成する必要があります。

– ADOConnection1 コンポーネントでは、LoginPrompt プロパティ = 「false」 (図 3) (データベースにアクセスするためのユーザー名とパスワードの要求をキャンセルします)。

– ADOTable1 コンポーネントでは、Connection プロパティ = “ADOConnection1” (図 4);

– DataSource1 コンポーネントでは、DataSet プロパティ = “ADOTable1” (図 5)。

– DBGrid1 コンポーネントでは、DataSource プロパティ = “DataSource1” (図 6);

– ADOTable1 コンポーネントのプロパティ TableName = “Worker” (図 7);

– DBGrid1 コンポーネントの Options プロパティで、オプション dgEditing = false (DBGrid1 グリッドからテーブル セルに直接データを入力することを禁止します) を設定します (図 8)。

米。 3. ADOConnection1 コンポーネントの LoginPrompt プロパティ

米。 4. ADOTable1 コンポーネントの接続プロパティ

米。 5. DataSource1 コンポーネントの DataSet プロパティ

米。 6. DBGrid1 コンポーネントの DataSource プロパティ

米。 7. ADOTable1 コンポーネントの TableName プロパティ

米。 8. DBGrid1 コンポーネントの Options プロパティの dgEditing オプション

  1. テーブルをアクティブにします。

テーブルにデータを表示するには、実行する必要があります 次のステップ(図9):

– テーブル ADOTable1 を選択します。

– プロパティ Active = true。

この後、テーブルデータが DBGrid1 に表示されます。

米。 9. ADOTable1 コンポーネントの Active プロパティ

  1. コンポーネントのサイズと形状を設定します。

次のステップでは、図 10 に示すように、フォーム上のコンポーネントのサイズと位置を調整します。

米。 10. 主な申請書

  1. DBGrid1 の ID_Worker フィールドを非表示にします。

表示されるテーブルの外観を正しくするには、キー フィールドである ID_Worker フィールドを非表示にする必要があります。 テーブルでは、このフィールドはカウンターです。 追加する場合 新しいエントリーこのフィールドの値は自動的に生成されます (1 ずつ増加します)。

まず、コンテキスト メニューから ADOTable1 コンポーネントのフィールド エディター (「フィールド エディタ…」) を呼び出す必要があります (図 11)。

米。 11. ADOTable1 コンポーネントのフィールド エディターの呼び出し

Form1.ADOTable1 ウィンドウが開きます。 このウィンドウでは、マウスを使用してコンテキスト メニューを呼び出す必要があります。 でコンテキストメニュー

「すべてのフィールドを追加」コマンドを選択します。

その結果、エディタ ウィンドウは図 12 のようになります。

米。 12. フィールドエディター

Form1.ADOTable1 フィールド エディターには、Worker テーブルのすべてのフィールドが表示されます。

ID_Worker フィールドを削除するには、ID_Worker 行を右クリックし、コンテキスト メニューで [削除] コマンドを選択する必要があります。

  1. この後、エディタを閉じても構いません。

その結果、DBGrid1 テーブルには 2 つのフィールドのみが表示されます (図 13)。

米。 13. 2 つのフィールドを持つ Worker テーブルの表示

「Salary」フィールドの小数点以下 2 桁に出力フィルタを設定します。

「給与」フィールドに金額値 (小数点以下 2 桁) を正しく表示するには、次の手順を実行する必要があります。

ADOTable1 コンポーネントを選択します。

  1. ステップ 6 で説明したように、フィールド エディタ「フィールド エディタ...」を呼び出します。その結果、名前と給与の 2 つのフィールドのリストが開きます。

「Salary」という行を選択します。

ADOTable1Salary という名前のオブジェクトがオブジェクト インスペクターでアクティブ化されます。

... 次のステップは、オブジェクト インスペクターの「表示形式」フィールドを「0.00」に設定することです (図 14)。 米。 14. ADOTable1 オブジェクトの Salary フィールドでの出力形式の設定 手順を完了すると、テーブルの給与フィールドが小数点第 2 位の精度で表示されます。(Tフォーム) ADOConnection1: TADOConnection;データソース 1: TDataSource; ADOTable1: TADOTable; DBGrid1: TDBGrid; StaticText1: TStaticText; StaticText2: TStaticText; StaticText1: TStaticText; StaticText3: TStaticText; ADOTable1Name: TwideStringField; ADOTable1Salary: TFloatField; 手順 FormActivate(送信者: TObject); FormClose(送信者: TObject; var アクション: TCloseAction); プライベート; ...
  1. (プライベート宣言) sum:real; // 合計

平均: 実数; // 算術平均

公共

(公的宣言)

終わり

StaticText1: TStaticText;フォームアクティブ化イベントのプログラミング。 ユーザーがプログラムをダウンロードしたら、すぐに表の合計と算術平均の値を計算する必要があります。 したがって、Form1 の OnActivate イベントをプログラムする必要があります。 OnActivate イベントは、プログラムが実行のために起動された後、フォームがアクティブ化されると呼び出されます。 Delphi でのイベント プログラミングの例を詳しく説明します。 この場合、イベント ハンドラーは次のようになります。 TForm1.FormActivate(送信者: TObject); 変数 f:Tフィールド; // 「フィールド」型の追加変数; 始める// 1. テーブルにレコードがあるかどうかを確認する もし ADOTable1.RecordCount = 0それから 出口// 2. DBGrid1 の視覚化を無効にする ADOTable1.DisableControls; // 3. Worker テーブルのすべてのレコードを反復処理します。 // 3.1. 最初のエントリに移動 ADOTable1.最初; // 3.2. 金額をゼロにリセット合計:= 0;<>// 3.3. 最初のレコードから給与値を取得します f:= ADOTable1.FieldByName("給与"); // 3.4. テーブル内のレコードをループする // - テーブルの終わりに達したかどうかを確認しますその間 ADOTable1.Eof真実 プライベート; する 始める // 3.4.1. 増加量 sum:= sum + f.Value; // 3.4.2. 次のエントリに移動 ADOTable1.次へ;// 4. 算術平均を計算する プライベート;

avg:= 合計 / ADOTable1.RecordCount;

// 5. TStaticText 型の行を埋める

StaticText1.Caption:= "合計: " + FloatToStr(sum, ffFixed, 8, 2);

StaticText2.Caption:= "平均給与: " + FloatToStr(avg, ffFixed, 8, 2);

// 6. DBGrid で視覚化を有効にする

ADOTable1.EnableControls;

いくつかのコード部分を説明しましょう。

DisableControls メソッドと EnableControls メソッドは、データ セット (データベース) に接続されているビジュアル コントロールを無効または有効にする役割を果たします。 DisableControls メソッドを呼び出すと、レコードが変更されるたびにアプリケーションが DBGrid1 コントロールの内容を再描画する無駄な時間を防ぐことができるため、レコードの反復プロセスを大幅に高速化できます。

指定されたフィールドの TField 型のオブジェクトを取得できます。 次に、このオブジェクトで現在のレコードから情報を取得できます。 プログラムでは、Salary フィールド レコードの値にアクセスするために、TField 型の追加変数 f が使用されます。

Salary フィールドの現在のレコードの値を読み取るには、演算子を呼び出すだけです。

StaticText1.Caption:= "合計: " + FloatToStr(sum, ffFixed, 8, 2);

f.値

ADOTable1.Eof

テーブルの終わりに到達すると true になります。

ADOTable1.次へ

次のテーブルレコードへの遷移を実装します。

合計の結果は、StaticText1 コンポーネントの Caption プロパティに表示されます。

  1. 算術平均値は、StaticText2 コンポーネントの Caption プロパティに表示されます。

実行するアプリケーションを起動します。

これでアプリケーションを実行できるようになります。

人々! 簡単なリクエストの作成を手伝ってください。テーブル 1 形式: 注文名 | 金額 | すべての注文の合計金額は最初の 10 ルーブルです。 2 番目の 20 をこすります。 3 番目の 30 をこすります。 金額列に線を追加する方法を教えてください。 結果を表示するには、「すべての注文の合計金額」= 60 ルーブルと表は時間の経過とともに追加されます。 100 番目の注文も表示されます...したがって、100 番目の注文には独自の金額が表示されます。 「すべての注文の合計金額」は自動的に再計算される必要があります。よろしくお願いいたします。

8 件の回答
提供されたデータに基づくと、これは不可能です。テーブル内の行の並べ替えはどのように決定されるのでしょうか?

これはExcelで簡単に行えます。 たとえば、コマンド =SUM(A1:A100) - つまり、 テーブル内の 100 個のセルの合計を取得するには、なぜデータベースでこれを行うことができないのでしょうか? 各注文名 (テキスト) には対応する番号 (番号) が付いています。 実はこの番号(順番)は順番になっています。 それらの。 例:1 | バッグ | 100こすります。 |2 | タイヤ | タイヤ 50こすります。 |...100 | 本 | 60こすります。 |...すべての注文 (1...100...) の合計金額を計算するにはどうすればよいですか?ミヴァン

,Excel では、テーブル内のレコードには物理的な順序があります。 どちらがより高く、より低いかを決定します。 リレーショナル データベースでは、この順序は存在しません。 順序はリクエストで指定されたソートによって決定され、それが存在しない場合は任意のソートが可能です。 質問に意味を持たせたい場合は、エントリの順序を確立するための基準を明確に示してください。 上の例では、これは行番号などです。 ただし、示されているテーブルの構造にはそのようなフィールドはありません。
テーブルには注文番号フィールドが含まれています。 それらの。 一般的なビューは次のようなものです。 注文名 | 注文金額 |1 | バッグ | 10ルール |2 | クルシュカ | 20ルール |3 | バンカ | 30ルール |... | ... |***|今は縛りはありますか? あるいは、また何か理解できませんでした... :(すべての注文の合計金額を確認するにはどうすればよいですか?
今リンクはありますか?
はい。 SELECT Table1.[注文番号], Table1.[注文名], Table1.[注文金額], Sum(q1.[注文金額]) AS [全注文の合計金額]FROM (SELECT t1.[注文番号] , t1.[注文名], t1.[注文金額], t2.[注文番号] FROM Table1 AS t1, Table1 AS t2 WHERE (((t1.[注文番号])>=.[注文番号] ))) AS q1 INNER JOIN Table1 ON q1.t1.[注文番号] = Table1.[注文番号]GROUP BY Table1.[注文番号], Table1.[注文名], Table1.[注文金額];
SELECT Table1.[注文番号], Table1.[注文名], Table1.[注文金額], Sum(q1.[注文金額]) AS [全注文の合計金額]FROM [ SELECT t1.[注文番号] , t1.[注文名], t1.[注文金額], t2.[注文番号] FROM Table1 AS t1, Table1 AS t2 WHERE (((t1.[注文番号])>=.[注文番号] ))]。 AS q1 INNER JOIN Table1 ON q1.t1.[注文番号] = Table1.[注文番号]GROUP BY Table1.[注文番号], Table1.[注文名], Table1.[注文金額];
エラーが表示されます: 名前「SELECT t1.[注文番号]」での括弧の使用は無効です。:((何が問題なの? 3分33秒後に追加人々! BDK を送信する準備ができました。 そうすれば。 WMで支払います。 非常に緊急です(1時間以内)

次のテーブルがあると仮定しましょう。 テーブル: tblOrdersフィールドタイプ idOrders CounterfldName TextfldSumma Monetary の場合、クエリは次のようになります。 SELECT Sum(tblOrders.fldSumma) AS FROM tblOrders; Sum-fldSummaこれは式のエイリアスです Sum(tblOrders.fldSumma)。 結果として、セルが 1 つあるテーブルが得られます。 明確にするために、例外処理を行わずに VS 2005 でコード例を作成しました。まず、プロジェクトを作成し、そこにボタンを追加する必要があります。 GetSumボタンとテキストフィールド サムテキストボックスつまり、名前を変更します。 フォーム名を次のように置き換えます メインフォームそのコードを下のコードに置き換えます。

オプション Strict OnOption Explicit OnImports System.Data.OleDbPublic Class MainForm """金額を取得する プライベート関数 GetSumma() As 10 進数 cn As New OleDbConnection(My.Settings.dbConnectionString) cn.Open() Dim cmd As OleDbCommand = cn.CreateCommand() cmd.CommandText = "SELECT Sum(tblOrders.fldSumma) AS FROM tblOrders; 」 Return CDec(cmd.ExecuteScalar()) End Function を使用して終了 """ Private Sub GetSumButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GetSumButton.Click " 現在の通貨で金額を表示 Me.SumTextBox.Text = FormatCurrency(GetSumma()) End SubEnd Class 動作する例、[マイ プロジェクト] >>[設定] に次の名前の行を追加する必要があります。 db接続文字列以下の内容 プロバイダー=Microsoft.Jet.OLEDB.4.0;データ ソース=|DataDirectory|\orders.mdb。 MS Access データベースをプロジェクトにアタッチするか、単に次のコマンドを使用してディレクトリにコピーします。 実行可能ファイル、その中に必要なテーブル (できればデータ付き) を作成する必要があります。

この記事では、計算フィールドについて説明します。 アクセスクエリ。 テーブルと同様、クエリでは、1 つ以上のフィールドのデータを使用して、各レコードの数値、文字列、または日付値の計算を実行できます。 計算の結果は、クエリ テーブルに新しい計算フィールドを形成します。 計算テーブル フィールドとは異なり、ソース データベース テーブルの計算フィールドは新しいフィールドを作成しません。 クエリが実行されるたびに、現在のフィールド値に基づいて計算が行われます。

計算フィールド式では、フィールド名に加えて定数と関数を使用できます。 式を処理した結果、取得できる値は 1 つだけです。

タスク1。 PRODUCT テーブルには PRICE フィールドと RATE_VAT フィールドがあり、VAT を含む価格を計算し、VAT を含む価格テーブルの計算フィールドで取得した価格と比較します。

  1. PRODUCT テーブルの選択クエリをデザイン モードで作成します。 フィールド NAME_TOV、PRICE、RATE_VAT、および VAT を含む価格をリクエスト フォームにドラッグします (図 4.6)。
  2. VAT を含む価格を計算するには、フィールド行の空のセルに式 [PRICE]+[PRICE]*[RATE_VAT] を書き込んで計算フィールドを作成します。
  3. 計算フィールドで 5000 を超える値を持つレコードを選択するには、基準行に > 5000 と入力します。
  4. 式を入力すると、システムはデフォルトで計算フィールドの名前「式 1」を生成します。これは、クエリの結果を含むテーブルの列見出しになります。 この名前は、式 [PRICE]+[PRICE]*[VAT_RATE] の前に挿入されます。 クエリ内の新しい計算フィールドごとに、式番号が 1 ずつ増加します。 計算フィールドの名前はコロンで式と区切られます。 名前を変更するには、リクエストフォームの計算フィールドにマウスカーソルを置き、マウスの右ボタンをクリックします。 状況依存メニューから、 プロパティ(プロパティ) フィールドに移動し、キャプション行に新しいフィールド名を入力します - VAT1を含む価格。 クエリの結果を含むテーブルでは、この名前が計算列のヘッダーに表示されます。 フィールド名はリクエストフォームで直接修正することもできます。
  5. クエリの結果を表示するには、 ボタンをクリックします。 実行するグループ内で(走る) 結果(結果)。 テーブルの計算フィールドとクエリの値は同じです。
  6. いずれかのリクエスト レコードで製品の価格を変更します。 両方の計算フィールドの値が即座に再計算されます。
  7. 計算フィールドまたは選択条件で複雑な式を作成するには、式ビルダーを使用することをお勧めします。 ビルダーを使用すると、テーブル、クエリ、演算記号、関数から式に必要なフィールド名を選択できます。 計算フィールドの式を削除し、ビルダーを使用して式を生成します。
  8. ボタンをクリックして式ビルダーを呼び出します。 ビルダーグループ内の(ビルダー) クエリ設定(クエリ設定) リボン デザイン、または選択して 建てる状況依存メニューの (ビルド)。 マウス カーソルは、式入力セルに事前に配置されている必要があります。
  9. 窓の左側 式ビルダー(式ビルダー) (図 4.7) クエリのベースとなる PRODUCT テーブルを選択します。 フィールドのリストが右側に表示されます。 式内で必要なフィールドと演算子をダブルクリックして、順番に選択します。 式はウィンドウの上部に形成されます。 ビルダーはフィールド名の前にそれが属するテーブルの名前を示し、それを感嘆符でフィールド名から区切っていることに注意してください。
  10. [OK] をクリックして、計算フィールドで式を作成するプロセスを完了します。
  11. リクエストを「Price with VAT」という名前で保存し、閉じます。
  12. 保存したファイルをナビゲーション領域で選択し、コンテキスト メニューから [開く] を選択して実行します。


タスク2。計算フィールドやフィルター条件で組み込み関数を使用できます。 Access には 150 を超える関数が定義されています。
特定の月に出荷されたすべての請求書を選択する必要があるとします。 INVOICE では、出荷日は日付/時刻データ型で DATE_OTG フィールドに保存されます。

  1. INVOICE テーブルの選択クエリをデザイン モードで作成します。 フィールド NOM_NAKL および CODE_SK をフォームにドラッグします (図 4.8)。
  2. 空の行セルに計算フィールドを作成する 分野(フィールド) そこに式の 1 つを書き込むことで: Format([INVOICE]![DISPOSITION_DATE];"mmmm") - この関数は月の完全な名前を返します。
    または Format([INBOOK]![DISPOSITION_DATE];"mm") - この関数は月番号を返します。
  3. 特定の月に発行された請求書を選択するには、「選択条件 (基準)」行の計算フィールドに月の名前 (例: 3 月) (図 4.8)、または月番号 (例: 3) を入力します。 Format関数のパラメータ。
  4. ボタンをクリックしてリクエストを完了してください 実行するグループ内で(走る) 結果リボン タブの (結果) リクエストの処理 | コンストラクタ(クエリ ツール | デザイン)。
  5. 計算フィールドに関数 Month(INVOICE!DATE_OTG) を書き込み、この関数が日付から抽出された月番号を返すことを確認します。
  6. 第 2 四半期に関連するすべての行を選択するには、「条件」行に演算子「Between 4 And 6」を入力します。これにより、式の値が指定された間隔内に収まるかどうかが決まります。
  7. 計算フィールドに式 MonthName(Month(INVOICE!DATE_OTG)) を書き込み、MonthName 関数が月番号を完全名に変換することを確認します。


これを強化するには、ビデオチュートリアルをご覧ください。