模拟没有该关键字的汇总
在Postgres中,我可以通过执行以下查询来模拟二维枢轴表:
SELECT ... FROM ...
GROUP BY
ROLLUP(x,y,z), -- ROWS
ROLLUP(a,b,c) -- COLS
作为具体示例在dbfiddle 中:
我知道可以使用 union all
进行一维 crodup
,例如:
SELECT a, b, SUM(c) FROM Input GROUP BY ROLLUP(a, b);
-->
SELECT NULL, NULL, SUM(c) FROM Input UNION ALL
SELECT a, NULL, SUM(c) FROM Input GROUP BY a UNION ALL
SELECT a, b, SUM(c) FROM Input GROUP BY a, b;
但是,如果不访问 lollup
关键词?我们在此处使用Postgres(或MySQL)作为数据库,但是在您的答案中,请避免使用 Rollup
关键字。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您也可以使用
union all
s模拟这一点,因为我们有:因此,使用
croup(a,b),lollup(x,y)
我们将产品乘以乘以:因此,将其应用于原始问题:
You can emulate this also with
UNION ALL
s since we have:So with
ROLLUP(a,b), ROLLUP(x,y)
we multiply the products together so we get:So applying it to the original question we would have:
https://dbfiddle.uk/?rdbms=postgres_14&fiddle=be3b0d89ad97eaf44b522caf0df9d7da