如何计算联接表中的特定变量

  • 本文关键字:变量 何计算 计算 mysql
  • 更新时间 :
  • 英文 :


我有两个表。

业务部门

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 JOINbusiness_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

最新更新