กำลังคำนวณผลรวมของส่วนต่าง ๆ ของคอลัมน์ตามคอลัมน์อื่นโดยใช้เครื่องคำนวณฟิลด์ QGIS


16

ฉันต้องการคำนวณผลรวมของค่าในหนึ่งคอลัมน์โดยยึดตามค่าในคอลัมน์อื่น เพื่อแสดงคำถามของฉันฉันอัพโหลดรูปภาพด้านล่าง คอลัมน์ที่สองประกอบด้วยรหัสไปรษณีย์ยอดขายรวมที่สาม ฉันต้องการที่จะรู้ว่ายอดขายรวมต่อรหัสไปรษณีย์คืออะไร? ดังนั้นในกรณีนี้:

ผลรวมของคอลัมน์สามสำหรับค่าของคอลัมน์สองคือ1023อะไร 4 (0+1+1+2+0)เอาท์พุทจากนั้นควรจะเป็น ผลรวม1024จากนั้นควรเป็น 11,5 ตามตรรกะเดียวกัน

เนื่องจากเป็นชุดข้อมูลที่ค่อนข้างใหญ่ฉันจึงต้องการให้เครื่องคำนวณฟิลด์ QGIS (หรือเครื่องมืออื่น ๆ ) คำนวณฟิลด์ใหม่ซึ่งระบุยอดขายรวมในรหัสไปรษณีย์ จนถึงตอนนี้ฉันไม่สามารถทำงานได้และหวังว่าคนที่นี่จะช่วยฉันได้

อย่างที่คุณเห็นฉันมีค่าขาดหายไปนี่เป็นปัญหาในการคำนวณหรือไม่? อาจจะพูดได้ดีก็คือมันเป็นโต๊ะ

ตัวอย่าง


ควรเป็น 3 (0 + 1 + 1 + 2 + 0) ?? จริงๆ?
user7172

คำตอบ:


24

อัปเดต: QGIS 2.18 (07/07/2017):

ในField Calculatorคุณสามารถใช้ฟังก์ชันการรวมsumซึ่งช่วยให้คุณสามารถรวมค่าของคอลัมน์ตามนิพจน์ คุณยังสามารถเลือกคุณสมบัติกลุ่มและตัวกรองสำหรับการสรุป ดังนั้นในเครื่องคำนวณภาคสนามของคุณคุณสามารถใช้:

sum( "Sum", "Sales")

ซึ่งทำเช่นเดียวกันกับวิธีการใช้ปลั๊กอินGroupStats



โพสต์ต้นฉบับ: 02/03/2016

ใช้GroupStatsปลั๊กอินที่คุณอาจจำเป็นต้องดาวน์โหลดได้จากปลั๊กอิน> จัดการและติดตั้งปลั๊กอิน

นี่คือเลเยอร์ตัวอย่างโดยใช้คุณลักษณะบางอย่างที่คุณแสดง:

ชั้น

จึงขอ:

  1. เรียกใช้GroupStatsปลั๊กอินเลือกสาขาที่เกี่ยวข้องสำหรับข้อสรุป ( Salesสำหรับแถว; Sumค่า) แล้วคลิกคำนวณ คุณควรเห็นผลลัพธ์แสดงยอดรวมของการขายแต่ละครั้ง:

    ปลั๊กอิน GroupStats

  2. บันทึกผลลัพธ์เป็นไฟล์. csv จากแถบเครื่องมือ GroupStats:

    ส่งออกเป็น csv

  3. นำเข้าไฟล์. csv กลับไปที่ QGIS โดยการลากไปยังอินเทอร์เฟซหรือจากแถบเครื่องมือ:

    เลเยอร์> เพิ่มเลเยอร์> เพิ่มเลเยอร์ข้อความที่มีตัวคั่น ( โปรดทราบว่าค่าจะถูกคั่นด้วยเซมิโคลอน )

  4. ทำร่วมกับเชปไฟล์และไฟล์ .csv ที่ตรงกับSalesสาขา:

    ร่วม

  5. ตอนนี้รูปร่างควรมีค่ารวมจากไฟล์. csv:

    ผล

คุณสามารถทำได้หากคุณต้องการให้ใช้Save As...ตัวเลือกในรูปร่างไฟล์และบันทึกเป็นไฟล์ใหม่เพื่อให้เขตข้อมูลที่เข้าร่วม


มันจะมีประโยชน์หากส่วนประกอบของเครื่องคิดเลขฟิลด์ของคำตอบนี้รวมถึงบรรทัด SQL ที่กลุ่มและ / หรือตัวกรอง @Joseph
eyerah

@eyerah - การแสดงออกที่sum( "Sum", "Sales")ใช้"Sales"เป็นตัวกรองกลุ่มถ้านั่นคือสิ่งที่คุณหมายถึงอะไร
โจเซฟ

1
โอ้ ฉันเห็นว่าตอนนี้ นั่นคือสิ่งที่ฉันหมายถึง ขอบคุณ
eyerah

11

หากคุณอัปเดตเป็น QGIS เวอร์ชันล่าสุดมากที่สุด 2.14 คุณสามารถใช้เลเยอร์เสมือนที่สร้างคำสั่ง sql เช่น:

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

UI ดูเหมือนว่า:

ป้อนคำอธิบายรูปภาพที่นี่

คุณยังสามารถใช้ตัวจัดการ DB ซึ่งคุณมีตัวสร้างคิวรีอยู่ด้านหลังปุ่ม sql:

ป้อนคำอธิบายรูปภาพที่นี่

คอลัมน์ MYID สามารถใช้เพื่อรวมยอดขายกลับไปที่ตารางหลัก แท็บเข้าร่วมอยู่ภายใต้คุณสมบัติตาราง

ดูการเปลี่ยนแปลงภาพ QGISภายใต้Feature: Virtual layers


6

วิธีในการทำเช่นนี้คือ:

  • ในตารางคุณลักษณะให้เลือกเลือกตามคุณสมบัติ พิมพ์ "column-name" = 1023 เลือกฟิลด์ทั้งหมดที่มีค่า 1,023
  • ไปที่เครื่องมือเวกเตอร์ -> เครื่องมือวิเคราะห์ -> สถิติพื้นฐาน เลือกเลเยอร์และคอลัมน์พร้อมการขาย ตรวจสอบให้แน่ใจว่าได้ทำเครื่องหมายที่ช่องทำเครื่องหมาย "ค่าที่เลือกเท่านั้น" ผลรวมจะปรากฏในหน้าต่างผลลัพธ์ คุณต้องเขียนมันลง;)
  • ทำซ้ำขั้นตอนสำหรับทุกรหัสไปรษณีย์

1
ป.ล. ค่าที่หายไปจะไม่มีปัญหา
Miron

นี่เป็นวิธีที่ง่ายและทำงานได้ดี แต่ก็อาจจะมีการบริโภคเมื่อการประมวลผลข้อมูลขนาดใหญ่ชุดเป็น Ammar กล่าวถึงใช้เวลานานมาก ...
dru87
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.