我有两个表。
业务部门
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
您可以相应地从business_unit
表到asset_item
执行LEFT JOIN
。business_unit
表应该是最左边的表,因为即使asset_item
中没有匹配的行,也要考虑所有的unit
。
然后我们可以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