#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