Menghitung jumlah bagian kolom berdasarkan kolom lain menggunakan Kalkulator Bidang QGIS?

16

Saya ingin menghitung jumlah nilai dalam satu kolom, berdasarkan nilai-nilai di kolom lain. Untuk mengilustrasikan pertanyaan saya, saya mengunggah gambar di bawah ini. Kolom kedua terdiri dari kode pos, total penjualan ketiga. Saya ingin tahu apa total penjualan per kode pos? Jadi dalam hal ini:

Berapa jumlah kolom tiga untuk nilai kolom dua 1023? Output seharusnya 4 (0+1+1+2+0). Jumlah untuk 1024kemudian harus 11,5 mengikuti logika yang sama.

Karena ini adalah kumpulan data yang cukup besar, saya ingin agar kalkulator bidang QGIS (atau alat lainnya) menghitung bidang baru yang menyatakan total penjualan dalam kode pos. Sejauh ini saya tidak bisa membuatnya bekerja dan berharap seseorang di sini dapat membantu saya.

Seperti yang Anda lihat saya memiliki beberapa nilai yang hilang, apakah ini masalah dalam perhitungan? Mungkin baik untuk disebutkan adalah bahwa ini adalah sebuah meja.

Contoh

Ammar
sumber
harus 3 (0 + 1 + 1 + 2 + 0) ?? Betulkah?
user7172

Jawaban:

24

Pembaruan: QGIS 2.18 (07/07/2017):

Di Kalkulator Bidang , Anda bisa menggunakan fungsi Agregatsum yang memungkinkan Anda untuk menjumlahkan nilai-nilai kolom berdasarkan ekspresi. Anda juga dapat, secara opsional, mengelompokkan dan memfilter fitur untuk penjumlahan. Jadi dalam kalkulator bidang Anda, Anda bisa menggunakan:

sum( "Sum", "Sales")

Yang tidak persis sama dengan metode menggunakan plugin GroupStats .



Pos asli: 02/03/2016

Gunakan plugin GroupStats yang mungkin perlu Anda unduh dari Plugins> Manage and Install Plugins .

Berikut ini contoh lapisan menggunakan beberapa atribut yang telah Anda perlihatkan:

Lapisan

Jadi ayo:

  1. Jalankan plugin GroupStats , pilih bidang yang relevan untuk dijumlahkan ( Salesuntuk baris; Sumuntuk nilai) lalu klik Hitung . Anda harus melihat hasil yang menunjukkan jumlah setiap penjualan:

    Plugin GroupStats

  2. Simpan hasilnya sebagai file .csv dari toolbar GroupStats:

    Ekspor ke csv

  3. Impor file .csv kembali ke QGIS dengan menyeretnya ke antarmuka atau dari bilah alat:

    Layer> Add Layer> Add Delimited Text Layer ( perhatikan bahwa nilainya dipisahkan oleh semi-titik dua )

  4. Lakukan Bergabung dengan file shapefile dan .csv, cocok dengan Salesbidang:

    Bergabung

  5. Shapefile sekarang harus berisi nilai penjumlahan dari file .csv:

    Hasil

Anda bisa, jika mau, melanjutkan untuk menggunakan Save As...opsi pada shapefile dan menyimpannya sebagai yang baru untuk menjaga bidang yang digabungkan.

Yusuf
sumber
Akan sangat membantu jika komponen kalkulator bidang dari jawaban ini termasuk baris SQL yang grup dan / atau filter. @
Joseph
@eyerah - Ekspresi sum( "Sum", "Sales")digunakan "Sales"sebagai filter grup, jika itu yang Anda maksud?
Joseph
1
Oh Saya melihat itu sekarang. Itu yang saya maksud. Terima kasih.
eyerah
11

Jika Anda memperbarui ke versi QGIS terbaru 2.14, Anda dapat menggunakan lapisan virtual membuat pernyataan sql seperti:

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

UI terlihat seperti:

masukkan deskripsi gambar di sini

Anda juga dapat menggunakan manajer DB, tempat Anda memiliki pembuat kueri di belakang tombol sql:

masukkan deskripsi gambar di sini

Kolom MYID dapat digunakan untuk bergabung dengan jumlah penjualan kembali ke tabel utama. Tab gabung berada di bawah properti tabel.

Lihatlah changelog visual QGIS di bawahFeature: Virtual layers

Jakob
sumber
6

Cara melakukan ini adalah sebagai berikut:

  • Di tabel atribut, pilih pilih berdasarkan fitur. Ketik "nama kolom" = 1023. Semua bidang dengan nilai 1023 dipilih.
  • Pergi ke alat vektor -> Alat analisis -> statistik dasar. Pilih layer Anda dan kolom dengan penjualan. Pastikan untuk mencentang kotak "Hanya nilai yang dipilih". Jumlahnya akan ditampilkan di jendela hasil. Anda harus menuliskannya;)
  • ulangi langkah-langkah untuk setiap kode pos
Miron
sumber
1
Nilai yang hilang PS tidak ada masalah.
Miron
Ini adalah pendekatan yang sederhana dan bekerja dengan baik. Namun mungkin sangat memakan waktu ketika memproses set data besar seperti yang disebutkan Ammar ...
dru87