Общая процедура
Общая процедура заключается в использовании sum
с group by 'Month'
. Это вернет таблицу, в которой Месяц используется в качестве индекса (без повторных месяцев), и у вас есть столбец с суммами всех месяцев.
Используя в своем примере, вы получите следующую промежуточную таблицу:
Month Sum
6 57
7 100
8 12
Затем вы можете использовать эту таблицу для создания столбца Sum в исходной таблице.
По сути, вы просто копируете значение в Sum из промежуточной таблицы во всех строках с одинаковыми Month .
Теперь, как это сделать, зависит от используемой вами технологии, которую вы не указали, поэтому я приведу пару примеров с помощью известных мне инструментов: если вы используете разные инструменты, попробуйте адаптировать идею.
Использование python-панд
Предположим, что df
- это ваша исходная таблица (без столбца Sum ), созданная с помощью pandas
. Тогда процедура будет:
#create the intermediate table using sum and groupby
idf = df.groupby('Month').sum()
#edit idf so that the number of rows is the same of df
idf = idf.loc[df['Month']].reset_index()
#adding the column to the original table
df['Sum'] = idf['Value']
Использование MySQL
Предположим, что otable
- это ваша исходная таблица (без столбца Sum) в базе данных MySQL
. Тогда процедура будет:
#create additional column to store the Sum, null by default
ALTER TABLE otable ADD COLUMN Sum INT;
#create the intermediate table using sum and groupby
CREATE TEMPORARY TABLE idf SELECT SUM(Value) FROM otable GROUP BY Month;
#update the original table
UPDATE otable o, idf i SET o.Sum = i.`SUM(Value)` WHERE o.Month = i.Month;
Использование Excel
Для Excel уже ответили здесь и здесь .