(SQL)如果列中的元素具有相同的名称,则在列中添加元素

时间:2014-03-11 14:14:19

标签: mysql sql postgresql

我有一张这样的表:

Name | Month | Price  
-------+---------+-------  
Gas , Jan , 21  
Gas , Feb , 40  
Food, Feb , 72  
Food, Apr , 56  
Food, Jan , 100  
Gas , Apr , 90  
Fun , Mar , 55  

新表应该是:

Name | Price  
--------+-------  
Gas , 151  
Food , 228  
Fun , 55

我将如何做到这一点?

3 个答案:

答案 0 :(得分:1)

使用此查询可获得所需的结果。它将通过从第一个表中获取数据将数据插入第二个表中。

INSERT INTO your_table_2 (Name, Price)
SELECT Name, SUM(Price) as Price FROM table_name GROUP BY Name;

答案 1 :(得分:1)

您可以按name进行分组,然后使用sum()之类的聚合函数为每个不同的price

添加name
select name, sum(price) as total_price
from your_table
group by name

答案 2 :(得分:0)

要从聚合创建新表,请使用CREATE TABLE AS

CREATE TABLE AS
SELECT name, sum(price)::int AS price
FROM   tbl
GROUP  BY 1;

转换为integer::int),因为Postgres会返回bigint的整数值之和。