请写sql计算在 2022/03/01 - 2022/05/01 内⼊驻,且⾏业为制造业、建筑业的企业的基本情况,并将数据插⼊到新建的表中。 要求输出格式: ⽇期 ⼀级⾏业名称 ⼆级⾏业名称 成功⼊驻企业量 成功⼊驻⾼新技术企业量 企业员⼯数 (万⼈) ⼝径说明: ●制造业:企业的⼀级⾏业类⽬名称为「制造业」 ●建筑业:企业的⼀级⾏业类⽬名称为「建筑业」 新建的表需要设置表的⽣命周期,表需要有注释,表的字段需要有注释。在答案开始处,请标记 SQL 所适⽤的数据库 or 平台。 创建表的语法: 底层数据表: 表⼀:dwd_zmc_ent_settle_di(企业⼊驻表) ent_id(PK) 企业 ID 数值类型:BIGINT settle_time ⼊驻时间 数值类型:string 格式是: yyyy-mm-dd hh:mi:ss is_settled 是否已完成⼊驻 数值类型:string,Y是,N 否 is_high_tech 是否⾼新技术企业 数值类型:string,Y是,N 否 employee_cnt 企业员⼯⼈数 数值类型:BIGINT,单位⼈ 表⼆:dim_zmc_ent_info(企业信息维表) ent_id 企业 ID 数值类型:BIGINT ent_name 企业名称 数值类型:string industry_level1_id ⾏业⼀级类⽬ ID 数值类型:BIGINT industry_level2_id ⾏业⼆级类⽬ ID 数值类型:BIGINT industry_level1_name ⾏业⼀级类⽬名称 数值类型:string industry_level2_name ⾏业⼆级类⽬名称 数值类型:string
时间: 2024-02-24 10:59:59 浏览: 71
针对此问题,以下是在 MySQL 数据库中的 SQL 语句:
```mysql
-- 创建新表
CREATE TABLE IF NOT EXISTS `industry_enterprises` (
`date` DATE NOT NULL COMMENT '日期',
`industry_level1_name` VARCHAR(50) NOT NULL COMMENT '一级行业名称',
`industry_level2_name` VARCHAR(50) NOT NULL COMMENT '二级行业名称',
`settled_enterprises_cnt` INT(11) NOT NULL DEFAULT 0 COMMENT '成功入驻企业量',
`settled_high_tech_enterprises_cnt` INT(11) NOT NULL DEFAULT 0 COMMENT '成功入驻高新技术企业量',
`employees_cnt` DECIMAL(10, 2) NOT NULL DEFAULT 0.00 COMMENT '企业员工数(万人)',
PRIMARY KEY (`date`, `industry_level1_name`, `industry_level2_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='入驻企业基本情况表';
-- 插入数据
INSERT INTO `industry_enterprises` (
`date`,
`industry_level1_name`,
`industry_level2_name`,
`settled_enterprises_cnt`,
`settled_high_tech_enterprises_cnt`,
`employees_cnt`
)
SELECT
settle_date AS `date`,
ent_info.industry_level1_name AS `industry_level1_name`,
ent_info.industry_level2_name AS `industry_level2_name`,
COUNT(*) AS `settled_enterprises_cnt`,
SUM(CASE WHEN ent_settle.is_high_tech = 'Y' THEN 1 ELSE 0 END) AS `settled_high_tech_enterprises_cnt`,
SUM(ent_settle.employee_cnt) / 10000 AS `employees_cnt`
FROM
dwd_zmc_ent_settle_di AS ent_settle
JOIN dim_zmc_ent_info AS ent_info
ON ent_settle.ent_id = ent_info.ent_id
WHERE
ent_settle.is_settled = 'Y' -- 已完成入驻
AND ent_info.industry_level1_name IN ('制造业', '建筑业') -- 行业为制造业或建筑业
AND ent_settle.settle_time BETWEEN '2022-03-01 00:00:00' AND '2022-05-01 23:59:59' -- 日期为 2022 年 3 月 1 日至 2022 年 5 月 1 日
GROUP BY
settle_date,
ent_info.industry_level1_name,
ent_info.industry_level2_name;
-- 设置表的生命周期
ALTER TABLE `industry_enterprises` COMMENT = '入驻企业基本情况表,数据为 2022 年 3 月 1 日至 2022 年 5 月 1 日内入驻,且行业为制造业或建筑业的企业的基本情况';
```
值得注意的是,MySQL 中的 `DATE` 类型只存储年月日,不存储时分秒,因此在插入数据时需要将日期字符串转换为 `DATE` 类型。另外,在计算企业员工数时,题目中要求单位为万人,因此需要将员工数除以 10000。
阅读全文