sql - SQL - GROUP BY 所有可能的变量
问题描述
我一直在寻找一种方法来做到这一点,但我似乎无法找到解决方案。
如何在不从列 2 中删除所有可能的变量的情况下进行选择和分组,其中列 1 中的变量不存在变量?
数据示例(左)- 我希望它如何(中)- 当前(右)
当我这样做时:
SELECT Column1, Column2, COUNT(*)
FROM Table
GROUP BY Column1, Column2;
如果我使用这行代码,我将无法看到 column2 中每个变量 column1 的所有变量(我想要)。因为如果它们不存在,它将不会显示在结果中。
因此,我想查看 Column1 中的所有变量以及 Column2 中的所有 4 个可能变量,然后计算该组合存在的数量。
提前感谢您的帮助,希望我的问题很清楚。
解决方案
我认为你想要一个cross join
然后left join
和聚合:
select c1.column1, c2.column2, count(t.column1)
from (select distinct column1 from t) c1 cross join
(select distinct column2 from t) c2 left join
t
on t.column1 = c1.column1 and t.column2 = c2.column2
group by c1.column1, c2.column2;
推荐阅读
- debugging - 使用 getinfo / getlocal / getupvalue 获取 Lua 中的所有变量以进行调试
- android - 指定孩子的问题已经有父母
- node.js - 无法在没有页面重新加载的情况下获取套接字数据,并与下面的代码做出反应
- postgresql - 匿名块在花时间删除重复数据|| 检查重复项,然后删除。但是循环继续运行并且不会停止
- python - 使用其他数据框中未包含的行创建一个新数据框
- linux - CSV数据多级解析Shell脚本
- python - 为什么在输入命令时出现此错误 - makemigrations
- python - Python:如何从多边形中删除 NaN?
- python - Python:将字典列表转换为表格
- javascript - 在 Javascript 中处理元组:容器数据结构