QGIS Field Calculatorを使用して別の列に基づいて列の部分の合計を計算しますか?


16

別の列の値に基づいて、1つの列の値の合計を計算したいと思います。私の質問を説明するために、下の写真をアップロードしました。2番目の列は郵便番号で構成され、3番目の合計売上高です。郵便番号ごとの総売上はいくらですか?したがって、この場合:

列2の値の列3の合計は1023?出力はになるはずです4 (0+1+1+2+0)。その場合の合計は1024、同じロジックに従って11,5になります。

これは非常に大きなデータセットであるため、ZGISコードで合計売上を示す新しいフィールドをQGISフィールド計算機(またはその他のツール)で計算したいと思います。これまでのところ、私はそれを機能させることができないようで、ここの誰かが私を助けてくれることを望んでいました。

ご覧のとおり、いくつかの欠損値がありますが、これは計算上の問題ですか?おそらく言及しておくと良いのは、テーブルであることです。

例


3(0 + 1 + 1 + 2 + 0)にする必要がありますか?? 本当に?
user7172

回答:


24

更新:QGIS 2.18(2017/07/07):

ではフィールド電卓は、使用することができます集約機能sumあなたが式に基づいて、列の値を合計することができます。必要に応じて、集計のために機能をグループ化およびフィルタリングすることもできます。したがって、フィールド計算機では、次を使用できます。

sum( "Sum", "Sales")

これは、GroupStatsプラグインを使用する方法とまったく同じです。



元の投稿:2016/02/03

[プラグイン]> [プラグインの管理とインストール]からダウンロードする必要がある場合があるGroupStatsプラグインを使用します。

表示した属性の一部を使用したサンプルレイヤーを次に示します。

層

それでは:

  1. GroupStatsプラグインを実行し、合計に関連するフィールド(Sales行、Sum値)を選択して、Calculateをクリックします。各販売の合計を示す結果が表示されるはずです。

    GroupStatsプラグイン

  2. GroupStatsツールバーから.csvファイルとして結果を保存します。

    CSVへのエクスポート

  3. .csvファイルをインターフェイスにドラッグするか、ツールバーからQGISにインポートします。

    レイヤー>レイヤーの追加>区切りテキストレイヤーの追加値はセミコロンで区切られていることに注意してください

  4. ください参加マッチング、シェープファイルと.csvファイルにSalesフィールドを:

    参加する

  5. これで、シェープファイルに.csvファイルの合計値が含まれるようになります。

    結果

必要に応じSave As...て、シェイプファイルでオプションを使用し、新しいオプションとして保存して、結合されたフィールドを保持できます。


この回答のフィールド計算コンポーネントに、グループ化やフィルタリングを行うSQL行が含まれていると便利です。@Joseph
eyerah

@eyerah-表現sum( "Sum", "Sales")"Sales"グループフィルターとして使用する場合
ジョセフ

1
ああ。私は今それを見る。それが私が意味したことです。ありがとう。
アイラ

11

最新のQGISバージョン2.14に更新する場合、仮想レイヤーを使用して次のようなSQLステートメントを作成できます。

SELECT "MYTABLE"."MYID", Sum("MYTABLE"."SALES")  AS zip_sale /*:int*/
FROM "MYTABLE"
GROUP BY "MYTABLE"."ZIPCODE"

UIは次のようになります。

ここに画像の説明を入力してください

sqlボタンの後ろにクエリビルダがあるDBマネージャを使用することもできます。

ここに画像の説明を入力してください

MYID列を使用して、合計売上をメインテーブルに戻すことができます。結合タブは、タブのプロパティの下にあります。

下のQGIS視覚的変更ログを見てください。Feature: Virtual layers


6

これを行う方法は次のとおりです。

  • 属性テーブルで、機能による選択を選択します。「列名」= 1023と入力します。値が1023のすべてのフィールドが選択されます。
  • ベクトルツール->分析ツール->基本統計に移動します。レイヤーと売上のある列を選択します。「選択した値のみ」チェックボックスをオンにしてください。結果ウィンドウに合計が表示されます。あなたはそれを書き留める必要があります;)
  • すべての郵便番号について手順を繰り返します

1
PS欠損値は問題ありません。
ミロン

これはシンプルで効果的なアプローチです。しかし、Ammarが述べたように大きなデータセットを処理する場合、非常に時間がかかる可能性があります
...-dru87
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.