sql删除重复行

6qqygrtg  于 2021-07-24  发布在  Java
关注(0)|答案(4)|浏览(349)

我有一个sql表

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

我只想要一个所有者id我不想要100次,但我想要所有所有者id 100的数量,即应该添加的数量(即。1000+3000+12000)如果我删除重复的所有者id行。怎么做
另一个问题是,如何从另一个表中获取所有者名称。如何添加join以获取所有者的名称

9avjhtql

9avjhtql1#

试试这个:

-- 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
uxhixvfz

uxhixvfz2#

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

p4rjhz4m3#

请使用下面的查询,

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

falq053o4#

它与sum函数一起工作,这里有一个参考:link
sum对插入的列的金额求和,这里是:amount。
请注意,只有在其他函数中的所有其他选定列或按分组时,某些函数才起作用。

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

相关问题