Я использую базу данных PostgreSQL и веб-приложение, встроенное в Node.js.
У меня есть таблица cases
вот так:
disease | country | year | number | rate
------------+---------------------------------------+------+-----------+--------
Diphtheria | Austria | 1989 | 190.00 | 2.47
Tetanus | Austria | 1989 | NaN | NaN
Pertussis | Austria | 1989 | 0.00 | 0.00
Measles | Austria | 1989 | NaN | NaN
Mumps | Austria | 1989 | 0.00 | 0.00
Rubella | Austria | 1989 | NaN | NaN
Polio | Austria | 1989 | NaN | NaN
Diphtheria | Belgium | 1989 | 180.00 | 2.42
Tetanus | Belgium | 1989 | 5.00 | 0.04
Pertussis | Belgium | 1989 | 1.00 | 0.01
Measles | Belgium | 1989 | 0.00 | 0.00
Mumps | Belgium | 1989 | 2052.00 | 50.00
Rubella | Belgium | 1989 | 0.00 | 0.00
Polio | Belgium | 1989 | NaN | NaN
Diphtheria | Austria | 1990 | 5.00 | 0.01
Tetanus | Austria | 1990 | 152.00 | 2.41
Pertussis | Austria | 1990 | 0.00 | 0.00
Measles | Austria | 1990 | 850.00 | 3.55
Mumps | Austria | 1990 | NaN | NaN
Rubella | Austria | 1990 | 55.00 | 3.00
Polio | Austria | 1990 | 0.00 | 0.00
Diphtheria | Belgium | 1990 | 191.00 | 2.48
Tetanus | Belgium | 1990 | 20.00 | 2.00
Pertussis | Belgium | 1990 | 5.00 | 0.40
Measles | Belgium | 1990 | 0.00 | 0.00
Mumps | Belgium | 1990 | 0.40 | 0.02
Rubella | Belgium | 1990 | 85.00 | 6.08
Polio | Belgium | 1990 | 10.00 | 0.60
... | ... | ... | ... | ...
Всего имеется 8040 строк, 7 разных значений заболеваний, 32 разных значения стран и 36 разных значений года.
Я должен объединить некоторые значения, основанные на заболевании, и найти максимальное значение.
Например, мне нужно объединить дифтерию, столбняк и коклюш в новое значение (называемое DTP), число (и частота) которого является суммой отдельных значений.
То же самое с корью, паротитом и краснухой, которые становятся MMR.
Остальные значения (полиомиелит) остаются такими же, как сейчас.
Итак, это промежуточный шаг:
disease | country | year | number | rate
------------+---------------------------------------+------+-----------+--------
DTP | Austria | 1989 | 190.00 | 2.47
MMR | Austria | 1989 | 0.00 | 0.00
Polio | Austria | 1989 | NaN | NaN
DTP | Belgium | 1989 | 186.00 | 2.47
MMR | Belgium | 1989 | 2052.00 | 50.00
Polio | Belgium | 1989 | NaN | NaN
DTP | Austria | 1990 | 157.00 | 2.42
MMR | Austria | 1990 | 905.00 | 6.55
Polio | Austria | 1990 | 0.00 | 0.00
DTP | Belgium | 1990 | 216.00 | 4.88
MMR | Belgium | 1990 | 85.40 | 7.00
Polio | Belgium | 1990 | 10.00 | 0.60
... | ... | ... | ... | ...
Суммируя значения, я считал NaN
0
.
После этого мне нужно указать максимальное значение для каждого элемента болезни, поэтому:
max DTP number = 216.00
max DTP rate = 4.88
max MMR number = 2052.00
max MMR rate = 5.00
max Polio number = 10.00
max Polio rate = 0.60
Мне нужны максимальные значения, поэтому я не против создания промежуточной таблицы. Это оба, если он создан или нет.
Как мне это сделать?