У меня есть таблица, которая содержит случайные данные против ключа с дублирующимися записями. Я хочу удалить дубликаты (проекцию, как она называется в реляционной алгебре), но вместо того, чтобы отбрасывать прикрепленные данные, суммируйте их вместе. Например:
orderID cost
1 5
1 2
1 10
2 3
2 3
3 15
Должен удалять дубликаты из идентификатора orderID, суммируя каждое значение orderID:
orderID cost
1 17 (5 + 2 + 10)
2 6
3 15
Мое предположение заключается в том, что я бы использовал SELECT DISTINCT, но я не знаю, как бы я это сделал. Я понимаю, что GROUP BY может что-то сделать, но я не уверен.
Это очень простая агрегация:
SELECT orderId, SUM(cost) AS cost
FROM MyTable
GROUP BY orderId
Это говорит о том, что для каждой группировки "orderId" суммируйте поле "стоимость" и возвращайте одно значение для каждой группы.
Вы можете использовать предложение group by
, чтобы получить в этом случае одну строку на разные значения столбца (ов), которые вы группируете, - orderId
. Вы можете применить агрегированную функцию, чтобы получить результат столбцов, которые вы не группируете по sum
, в этом случае:
SELECT orderId, SUM(cost)
FROM mytable
GROUP BY orderId