Обчислення суми частин стовпця на основі іншого стовпця за допомогою QGIS Field Calculator?


17

Я хотів би обчислити суму значень в одному стовпчику на основі значень в іншому стовпці. Щоб проілюструвати своє запитання, я завантажив картинку нижче. Другий стовпчик складається з поштових індексів, третій - загальний обсяг продажів. Я хотів би знати, який загальний обсяг продажів за поштовим індексом? Отже, у цьому випадку:

Яка сума стовпця три для значення другого стовпця 1023? Вихід тоді повинен бути 4 (0+1+1+2+0). Сума для 1024цього повинна складати 11,5 за тією ж логікою.

Оскільки це досить великий набір даних, я хотів би, щоб калькулятор поля QGIS (або будь-який інший інструмент) обчислював нове поле, яке визначає загальний обсяг продажів у поштовому індексі. Поки я, здається, не можу змусити його працювати, і сподівався, що хтось тут може мені допомогти.

Як ви бачите, у мене є деякі відсутні значення, це проблема в розрахунку? Можливо, добре згадати те, що це стіл.

Приклад


має бути 3 (0 + 1 + 1 + 2 + 0) ?? справді?
user7172

Відповіді:


25

Оновлення: QGIS 2.18 (07.07.2017):

У калькуляторі Field , ви можете використовувати агрегатні функцію , sumяка дозволяє підсумувати значення стовпця на основі виразу. Ви також можете додатково групувати та фільтрувати функції для підсумовування. Отже, у вашому польовому калькуляторі ви можете просто використовувати:

sum( "Sum", "Sales")

Що робить точно так само, як метод, використовуючи плагін GroupStats .



Оригінальна публікація: 03.02.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"

Інтерфейс користувача виглядає так:

введіть тут опис зображення

Ви також можете скористатись менеджером БД, де за кнопкою sql є конструктор запитів:

введіть тут опис зображення

Стовпець MYID можна використовувати для приєднання підсумкових продажів до головної таблиці. Вкладка приєднання знаходиться під властивостями tabel.

Погляньте на візуальний журнал змін QGIS підFeature: Virtual layers


6

Спосіб цього полягає в наступному:

  • У таблиці атрибутів виберіть "Вибір за функцією". Введіть "ім'я стовпця" = 1023. Вибрані всі поля зі значенням 1023.
  • Перейдіть до векторних інструментів -> Інструменти аналізу -> основна статистика. Виберіть свій шар та стовпець із продажами. Обов’язково встановіть прапорець "лише вибрані значення". Сума відображатиметься у вікні результатів. Ви повинні це записати;)
  • повторіть кроки для кожного поштового індексу

1
PS Пропущені значення - це не проблема.
Мірон

Це простий і добре працюючий підхід. Однак, обробка великого набору даних, як згадував Аммар, може зайняти дуже багато часу ...
dru87
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.