sql удаление повторяющейся строки

#sql

Вопрос:

У меня есть таблица в SQL

 Id   owner_id   amount
1     100        1000
2     101        2000
3     100        3000
4     104        800
5     100        1200
 

мне нужен только один идентификатор владельца, я не хочу 100 несколько раз,но я хочу, чтобы сумма всех идентификаторов владельца составляла 100, т. е. эта сумма должна быть добавлена(т. е. 1000 3000 12000) если я удалю дубликат строки Owner_id. как это сделать

И еще одна проблема, связанная с идентификатором владельца из другой таблицы, как получить имя владельца из другой таблицы. Как добавить соединение, чтобы узнать имя владельца

Комментарии:

1. если вы хотите сохранить сумму (т. е. 1000 3000 12000) храните в той же таблице или храните во второй таблице, содержащей суммы, и обновите значение в основной таблице с идентификатором владельца, Сумма… таким образом, в таблице у вас будет только уникальный владелец

2. Помните, что после очистки данных вы должны добавить уникальный ключ в owner_id столбец таблицы, чтобы избежать дальнейшего дублирования данных.

3. Вы либо пропускаете код c# в своем вопросе, либо в своем SQL-скрипте. Как есть, в вашем вопросе говорится только то, что вы хотите получить, но в нем отсутствует ваша фактическая проблема/вопрос

4. Отметьте свой вопрос в базе данных, которую вы используете.

Ответ №1:

 SELECT
  owner_id,
  SUM(amount) total_amount
FROM
  table
GROUP BY
  owner_id
 

Ответ №2:

попробуйте это :

 -- Acumulate all the amount to be able to do the cleanup
UPDATE table SET amount = sumAmount
FROM table t
JOIN (SELECT owner_id, SUM(amount) sumAmount
FROM table
GROUP BY owner_id) x ON x.owner_id = t.owner_id;

-- Delete duplicated data
WITH CTE AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY owner_id, amount ORDER BY Id) row
    FROM table)
DELETE CTE WHERE row <> 1
 

Комментарии:

1. Разве так не должно быть PARTITION BY owner_id ORDER BY Id ? Кстати, хороший ответ, это первый, который касается очистки

2. обновлено на заказ по идентификатору, это должно работать или, по крайней мере, может дать представление о том, чтобы работать по мере необходимости с небольшим количеством подергиваний

Ответ №3:

Пожалуйста, используйте следующий запрос,

 select owner_id, sum(amount) from table_name group by owner_id;
 

Ответ №4:

Он работает с функцией SUM, вот ссылка: Ссылка

СУММА суммирует сумму столбца, который вы вставляете, здесь: сумма.

Пожалуйста, имейте в виду, что некоторые функции работают только в том случае, если все остальные выбранные столбцы находятся в другой функции ИЛИ сгруппированы по.

 SELECT
  owner_id,
  SUM(amount) total_amount
FROM
  table
GROUP BY
  owner_id