用sql统计状态为在营的优质企业的情况。要求输出格式: 省份 优质企业数 其中连续评为A级纳税⼈的企业数 其中⾼等规模企业数 其中⻓期经营企业数 ⼝径解释:满⾜任何以下条件,既可以判定为优质企业: ●连续评为A级纳税⼈:过去两年连续被评为 A 级纳税⼈ ●⾼等规模企业:最新年报中企业员⼯⼈数排名在全部企业的前 10% ●⻓期经营:企业经营⾄今超过 3 年可判定为⻓期经营 表⼀:dim_zmc_ent_info(企业信息维表) ent_id 企业 ID 数值类型:BIGINT ent_name 企业名称 数值类型:string operate_from_date 经营期起⽇ 数值类型:string 格式是: yyyy-mm-dd ent_status 企业经营状态 数值类型:string,枚举值:在营、停业、注销 province 省份 数值类型:string 表⼆:dwd_zmc_ent_annual_dd (企业年报记录全表) ent_id 企业ID 数值类型:BIGINT year 年份 数值类型:BIGINT email 企业邮箱 数值类型:STRING emp_num 员⼯⼈数 数值类型:BIGINT total_profit 利润总额 数值类型:DOUBLE,单位万元 表三:dwd_zmc_ent_alevel_dd (企业A级纳税⼈评级全量表) ent_id 企业ID 数值类型:BIGINT year 年份 数值类型:BIGINT is_alevel 是否 A 级纳税⼈ 数值类型:STRING,Y是, N否
时间: 2023-12-15 16:07:34 浏览: 30
可以使用以下 SQL 语句统计状态为在营的优质企业:
```sql
SELECT
province,
COUNT(DISTINCT CASE WHEN alevel_count >= 2 THEN ent_id END) AS alevel_ent_count, -- 连续评为A级纳税人的企业数
COUNT(DISTINCT CASE WHEN emp_rank <= emp_top10 AND emp_num IS NOT NULL THEN ent_id END) AS high_scale_ent_count, -- 高等规模企业数
COUNT(DISTINCT CASE WHEN operate_days >= 1095 THEN ent_id END) AS long_operate_ent_count, -- 长期经营企业数
COUNT(DISTINCT ent_id) AS total_ent_count -- 优质企业数
FROM dim_zmc_ent_info ei
LEFT JOIN (
SELECT ent_id, COUNT(*) AS alevel_count
FROM dwd_zmc_ent_alevel_dd
WHERE is_alevel = 'Y'
GROUP BY ent_id
) a ON ei.ent_id = a.ent_id
LEFT JOIN (
SELECT
ent_id,
emp_num,
NTILE(10) OVER (ORDER BY emp_num DESC) AS emp_rank,
PERCENT_RANK() OVER () AS emp_top10
FROM dwd_zmc_ent_annual_dd
WHERE year = (SELECT MAX(year) FROM dwd_zmc_ent_annual_dd)
) b ON ei.ent_id = b.ent_id
LEFT JOIN (
SELECT
ent_id,
DATEDIFF(CURRENT_DATE(), operate_from_date) AS operate_days
FROM dim_zmc_ent_info
) c ON ei.ent_id = c.ent_id
WHERE ent_status = '在营'
GROUP BY province;
```
说明:
1. 使用 `LEFT JOIN` 连接三个表,分别是企业信息维表 `dim_zmc_ent_info`、企业年报记录全表 `dwd_zmc_ent_annual_dd` 和企业A级纳税人评级全量表 `dwd_zmc_ent_alevel_dd`。
2. 对于连续评为A级纳税人的企业,使用子查询统计其连续评级次数,并在外层查询时筛选出连续评级次数大于等于 2 的企业。
3. 对于高等规模企业,使用子查询将所有企业按照员工人数从大到小排序,并使用 NTILE 函数将其分为 10 个组,然后筛选出排名在前 10% 的企业。
4. 对于长期经营企业,计算当前日期与经营开始日期之间的天数,并在外层查询时筛选出经营时间超过 3 年的企业。
5. 使用 `COUNT(DISTINCT ...)` 统计企业数量,其中 `DISTINCT` 关键字用于去重。
6. 使用 `GROUP BY` 按照省份进行分组。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)