Выберите Distinct, добавляя кортежи вместе в SQL

0

У меня есть таблица, которая содержит случайные данные против ключа с дублирующимися записями. Я хочу удалить дубликаты (проекцию, как она называется в реляционной алгебре), но вместо того, чтобы отбрасывать прикрепленные данные, суммируйте их вместе. Например:

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 может что-то сделать, но я не уверен.

Теги:
database
relational-algebra

2 ответа

1
Лучший ответ

Это очень простая агрегация:

SELECT orderId, SUM(cost) AS cost
FROM MyTable
GROUP BY orderId

Это говорит о том, что для каждой группировки "orderId" суммируйте поле "стоимость" и возвращайте одно значение для каждой группы.

0

Вы можете использовать предложение group by, чтобы получить в этом случае одну строку на разные значения столбца (ов), которые вы группируете, - orderId. Вы можете применить агрегированную функцию, чтобы получить результат столбцов, которые вы не группируете по sum, в этом случае:

SELECT   orderId, SUM(cost)
FROM     mytable
GROUP BY orderId

Ещё вопросы

Сообщество Overcoder
Наверх
Меню