sql - 不同的组以避免重复部门
问题描述
我有表1
Dept Class
A x1
A x2
B Y1
B Y2
和表2
Dept
A
B
如果它们是相同的部门(无论班级),我想加入两个表并按部门计数组,所以我会有
CountDept Dept
1 A
1 B
避免表 1 上的重复部门的目标(甚至在表 1 的同一部门中有多个类)。
我尝试了不同但不起作用
select distinct count(t1.dept)countdept, t1.dept, t1.class
from table2 t2
join table1 t1 on t2.dept = t1.dept
group by t1.Dept, t1.class
解决方案
看起来你根本不想加入。
正如 Gordon 在请求评论中所说,您似乎只想显示 table2.dept,每个“计数”为 1,这只是:
select 1 as count_dept, dept from table2;
如果您只想显示那些也存在于 table1 中的内容,请使用IN
or EXISTS
:
select 1 as count_dept, dept from table2 where dept in (select dept from table1);
或者,如果您也想“计数”零,请使用CASE WHEN
:
select
case when dept in (select dept from table1) then 1 else 0 end as count_dept,
dept
from table2;
推荐阅读
- json-deserialization - 如何在 Csharp 中反序列化 JSON 数组
- kubernetes - Skaffold 以什么顺序启动部署,有没有办法指定顺序?
- cmake - 每次迁移到相同的新硬件时,如何避免重建 15GB-8 小时长的 PCL 库?
- python - Django Python Shell用十进制查询所有对象问题
- mongodb - 想要一些关于以下案例的 MongoDB 集合的最佳索引的输入
- python - 使用命令行 FreeCAD 创建一个简单的圆柱体
- linux - 针对 Cygwin 与 Linux 主机的交叉编译
- c# - 使用 oData 和 EFCore 返回关系对象
- css - 在 span 中引入 SVG 打破了子元素从左到右的定位
- regex - IntelliJ:将多行加入单个 CSV 行的正则表达式?