在每组下方的新行中显示具有相同属性的行总和
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查看结果
【讨论】:
以上是关于在每组下方的新行中显示具有相同属性的行总和的主要内容,如果未能解决你的问题,请参考以下文章