Пометка и агрегирование с использованием SQL CASE WHEN, как критерии - PullRequest
0 голосов
/ 24 сентября 2019

Я хочу создать сводную таблицу из данных клиента.Таблица Excel данных профилирования свойств.Данные включают в себя:

  1. Уникальный идентификатор
  2. Бизнес, проведенный из занятого имущества
  3. Код материала, использованного для строительства объекта
  4. Количествоэтажи здания и
  5. Оценка

enter image description here

Клиент требует совокупной оценки свойств на основе профиля риска (определяетсяколичество этажей - рассказы).Формат отчета показывает, что критерии профиля риска классифицируются как Низкие, Средние и Высокие в зависимости от количества публикаций.

enter image description here

Например, для кода материала 15-19 «Низкий риск» означает одноэтажное здание.Для того же диапазона кодов материалов средний риск определяется как 2-3-этажное здание, а высокий - более 3-х этажного здания.Вместо того, чтобы просто помечать их как низкий, средний или высокий, я хочу заполнить таблицу в том же формате, где вместо тега риска будет столбец суммы оценки.Другими словами, все местоположения, построенные с использованием масонства, будут агрегированы, а соответствующие итоговые суммы будут распределены по столбцам Низкий, Средний и Высокий в зависимости от количества этажей.

Чтобы решить эту проблему, я использовал выражение if elif,Сначала я создал столбец для определения риска, используя столбец с количеством этажей.Это дало мне для каждой строки любую из 3 записей - Низкая, Средняя, ​​Высокая.Тот же способ был использован для создания столбца с именем Строительный материал.Почему-то я не могу собрать и распределить сумму оценки в 3 столбцах.

Любая помощь?

Мой пример кода, использованный для создания столбца тега - 'BldgMaterial':

def f(row):
  if 19 > row['MaterialCode'] > 15:
      print("Masonry")
  elif 40 > row['MaterialCode'] > 30:
      print("Concrete")
  elif 60 > row['MaterialCode'] > 50:
      print("Iron")
  else:
      print("Check")
  return "x"
...