mysql - 如何计算联接表中的特定变量
问题描述
我有 2 张桌子。
事业部
ID unit
1 AR
2 AP
3 AT HOME
4 CSS
5 EIT
6 SUPPORT
资产项目
ID allocation_unit item_type
1 AR Laptop
2 AP Laptop
3 CSS Laptop
4 EIT Laptop
5 EIT Laptop
6 EIT Laptop
我希望能够将数据提取到一个表格中,在表格中我可以计算出有多少台笔记本电脑拥有所有业务部门
这是我想展示的结果
Unit Laptop
AR 1
AP 1
AT HOME 0
CSS 1
EIT 3
SUPPORT 0
解决方案
你可以做一个LEFT JOIN
从business_unit
表到asset_item
相应的。business_unit
table 应该是最左边的表,因为您要考虑所有unit
,即使asset_item
.
然后我们可以对函数GROUP BY
使用条件聚合:COUNT()
SELECT
bu.unit,
COUNT(CASE WHEN ai.item_type = 'Laptop' THEN 1 END) AS Laptop
FROM business_unit bu
LEFT JOIN asset_item ai
ON ai.allocation_unit = bu.unit
GROUP BY bu.unit
如果您只关心Laptop
计数值,那么我们可以将条件放在LEFT JOIN
自身上并取消CASE..WHEN
表达式。
SELECT
bu.unit,
COUNT(ai.item_type) AS Laptop
FROM business_unit bu
LEFT JOIN asset_item ai
ON ai.allocation_unit = bu.unit AND
ai.item_type = 'Laptop'
GROUP BY bu.unit
推荐阅读
- python-3.x - 化学式的正则表达式问题。无法摆脱数字的 '' 并返回元组
- javascript - csv中API URL+Request+ResponseCode+ResponseBody的Jmeter日志记录
- python-3.x - BeautilulSoup 插入一个标签和这个新标签的子标签及其关联值
- java - 在配置中设置 jdkhome 后 Netbeans 不会启动
- python - Python Dataframe 查找日期时间行之间的差异并转换为秒
- java - Primefaces menuButton 在版本更新 6.2 -> 7.0 后不起作用
- powershell - 带有文件夹排除的设置 ACL
- typescript - 打字稿泛型、约束和文字类型
- amazon-web-services - AWS Step Functions - 在不发生迭代时利用空 Map 状态输出
- python - google 的 python 风格指南 - 属性说明