查询行政区划下各类企业的总数。

本文介绍了一种使用SQL查询来统计不同行政区划下各类型企业的数量的方法,并展示了如何通过CASE WHEN语句实现多条件计数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、需求
在这里插入图片描述
需求很简单就是统计行政区划下各类企业的总数,行政区划下没有企业也要展示,分类企业没有的也要展示,行政区划字典、分类企业字典在同一张字典表(就是为了关联查出名称)里面,业务表结构见下:
在这里插入图片描述
二、假设有10个行政区划,那么返回给前台就是10条数据,后台数据类型就是List<实体(或者Map)>,
实体里面的属性为{
行政区划:北京,
A类企业数量:1,
B类企业数量:2,
C类企业数量:3,
D类企业数量:4
},所以针对这种返回结果去写sql。
再观察业务表,发现企业类别就一列,只能根据行政区划统计出各区划下的企业总数。所以我们要转化一下,将企业类别当作列。

				SELECT ACC_AREA "行政区划",
			sum( case REPORT_INDUSTRY WHEN '7058dcb912c446e8b20f8816815fc817' then 1 else 0 end  ) "A类企业数量",	
			sum( case REPORT_INDUSTRY WHEN '85444e5d49b44149acf006011731f837' then 1 else 0 end  ) "B类企业数量",	
			sum( case REPORT_INDUSTRY WHEN 'afaa8e81c8e14e5d97553cf5b797485f' then 1 else 0 end  ) "C类企业数量",	
			sum( case REPORT_INDUSTRY WHEN 'c58524a6681a4c9d826b7ff8860cea68' then 1 else 0 end  ) "D类企业数量"
 FROM test GROUP BY ACC_AREA

在这里插入图片描述
然后用上面这个结果关联字典表得到行政区划的中文名称,这个简单就不写了。这里最让我疑惑的是,如果case when多怎么办,我这里企业类别比较少,还好。如果有那种很多的咋办,写几十个case when?欢迎大家探讨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值