用ORACLE 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否
时间: 2024-02-25 14:52:47 浏览: 65
可以使用以下SQL语句来统计状态为在营的优质企业:
```
SELECT
d.province,
COUNT(DISTINCT d.ent_id) AS 优质企业数,
COUNT(DISTINCT a.ent_id) AS 连续评为A级纳税人的企业数,
COUNT(DISTINCT CASE WHEN d.emp_num >= t.emp_num_top10 THEN d.ent_id END) AS 高等规模企业数,
COUNT(DISTINCT CASE WHEN d.operate_from_date <= DATEADD(year, -3, GETDATE()) THEN d.ent_id END) AS 长期经营企业数
FROM
dim_zmc_ent_info d
LEFT JOIN (SELECT
year,
emp_num_top10
FROM
(SELECT
year,
emp_num_top10,
DENSE_RANK() OVER (PARTITION BY year ORDER BY emp_num_top10 DESC) AS rank
FROM
(SELECT
year,
NTILE(10) OVER (PARTITION BY year ORDER BY emp_num DESC) AS emp_num_top10
FROM
dwd_zmc_ent_annual_dd
WHERE
year = YEAR(GETDATE())) t
WHERE
rank = 1) t) t ON d.province = t.year
LEFT JOIN dwd_zmc_ent_annual_dd a ON d.ent_id = a.ent_id AND a.year = YEAR(GETDATE())-1 AND EXISTS (SELECT 1 FROM dwd_zmc_ent_annual_dd WHERE ent_id = a.ent_id AND year = YEAR(GETDATE())-2)
LEFT JOIN dwd_zmc_ent_alevel_dd al ON d.ent_id = al.ent_id AND al.is_alevel = 'Y'
WHERE
d.ent_status = '在营'
GROUP BY
d.province,
t.emp_num_top10;
```
需要注意的是,这里假设最新年报中的员工人数排名前10%的企业为高等规模企业,另外连续评为A级纳税人的定义是过去两年都被评为A级纳税人。
阅读全文