在每组下方的新行中显示具有相同属性的行总和

Posted

技术标签:

【中文标题】在每组下方的新行中显示具有相同属性的行总和【英文标题】:Display sum of rows with same attribute, in new row below each group 【发布时间】:2022-01-13 09:06:26 【问题描述】:

我有一张餐厅表:

name year profit
restaurant1 2016 112000
restaurant1 2018 150000
restaurant1 2020 165000
restaurant2 2018 40000
restaurant2 2019 52000
restaurant3 2017 64000
restaurant3 2018 73000
restaurant3 2019 76000

我想按餐厅名称对每家餐厅的利润求和,并在每家餐厅之后显示总利润,如下所示:

name year profit
restaurant1 2016 112000
restaurant1 2018 150000
restaurant1 2020 165000
restaurant1 total 427000
restaurant2 2018 40000
restaurant2 2019 52000
restaurant 2 total 92000
restaurant3 2017 64000
restaurant3 2018 73000
restaurant3 2019 76000
restaurant3 total 231000

我知道我可以通过SELECT SUM(profit) FROM restaurants GROUP BY restaurants.name;

获得每家餐厅的总利润

我的问题是如何显示此结果我在第二个表中显示的方式。

【问题讨论】:

【参考方案1】:

只需使用UNION

SELECT name, year :: text, profit FROM restaurants
UNION
(SELECT name, 'total', SUM(profit) FROM restaurants GROUP BY restaurants.name)
ORDER BY name, year

在dbfiddle查看结果

【讨论】:

以上是关于在每组下方的新行中显示具有相同属性的行总和的主要内容,如果未能解决你的问题,请参考以下文章

聚合具有相同日期的列(总和)

聚合具有两个或多个具有相同值的列的行

将 SQL 数据插入具有相同 ID 的行中?

来自具有相同类名的段落的输入或字符串的值总和始终显示“0”

显示具有相同值的行数

计算具有相同 ID 的行并显示在表格上