postgresql - 如何按汇总结果将分组转换为列?
问题描述
我在数据库中有以下结构:
类别 | 子类别 | 物品 |
---|---|---|
食物 | 水果 | 香蕉 |
食物 | 水果 | 橙子 |
食物 | 蔬菜 | 土豆 |
我发现我可以使用GROUP BY ROLLUP
如下递归总结类别:
SELECT Category, Subcategory, Item, count(*)
FROM Items
GROUP BY ROLLUP
(
Category,
Subcategory,
Item
)
这将给出以下结果:
类别 | 子类别 | 物品 | 组内计数 |
---|---|---|---|
食物 | 水果 | 香蕉 | 1 |
食物 | 水果 | 橙子 | 1 |
食物 | 水果 | 无效的 | 2 |
食物 | 蔬菜 | 土豆 | 1 |
食物 | 蔬菜 | 无效的 | 1 |
食物 | 无效的 | 无效的 | 3 |
问题
我想知道,是否有任何简单的方法可以将这些结果从行转换为列,以便我摆脱NULL值并获得如下列中的计数?
类别 | 子类别 | 物品 | CountInSame子类别 | CountInSameCategory |
---|---|---|---|---|
食物 | 水果 | 香蕉 | 2 | 3 |
食物 | 水果 | 橙子 | 2 | 3 |
食物 | 蔬菜 | 土豆 | 1 | 3 |
解决方案
推荐阅读
- dart - 如何检查列表是否包含列表,并从列表中删除列表
- php - 集合属性中的 PHP Blade Foreach 元素
- jenkins - Jenkins kubernetes-plugin 与多个集群对话
- r - 从 Sharepoint 读取到 R 不断抛出 403 Forbidden
- arrays - 创建另一个数组中项目之间差异的数组
- java - 如何阻止扫描仪重复自身?
- javascript - 如何在 javascript 中访问我的外部 JSON 文件以将其创建为 HTML?
- docker - 修复不断重启的 docker 容器
- java - 如何打印在新行上刮下的每条信息
- typescript - TypeScript:将数组传递给变量而不是直接传递给函数时出错