leading-project/finereport/预警/预警-项目级-客满完成率.sql

190 lines
7.6 KiB
MySQL
Raw Permalink Normal View History

2024-11-27 11:07:58 +08:00
-- ======================================
-- 预警-项目级-客满完成率-95%
-- ======================================
with a as( -- 所有有角色的人员
select t1.username,t3.name as role_name from finedb.fine_user t1
inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId
inner join finedb.fine_custom_role t3 on t2.roleId = t3.id
),
b as( -- 找到单条预警规则**
select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning
where index_name = '客满完成率'
and comm_organ = '项目'
and index_value = '0.95'
limit 1
),
c as( -- 找到关联的用户
select distinct username from b
join a on FIND_IN_SET(a.role_name,b.mang_organ)
),
d as( -- 找到规则下受影响的项目**
select t1.organ_name,t1.comm_name,t1.km_comple_rate from dim_early_warning_comm_d t1
inner join b t2 on t1.km_comple_rate < t2.index_value
),
e as( -- 要推送的总部人员
select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1
inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员'
),
f as( -- 要推送的片区人员
select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1
inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员'
inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth)
),
g as( -- 要推送的项目人员
select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1
inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员'
inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth)
)
-- 要推送的人员合集
select username,LoginCode,user_type,ProjectAuth from e
union all
select username,LoginCode,user_type,ProjectAuth from f
union all
select username,LoginCode,user_type,ProjectAuth from g
;
-- ======================================
-- 预警-项目级-客满完成率-90%
-- ======================================
with a as( -- 所有有角色的人员
select t1.username,t3.name as role_name from finedb.fine_user t1
inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId
inner join finedb.fine_custom_role t3 on t2.roleId = t3.id
),
b as( -- 找到单条预警规则**
select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning
where index_name = '客满完成率'
and comm_organ = '项目'
and index_value = '0.9'
limit 1
),
c as( -- 找到关联的用户
select distinct username from b
join a on FIND_IN_SET(a.role_name,b.mang_organ)
),
d as( -- 找到规则下受影响的项目**
select t1.organ_name,t1.comm_name,t1.km_comple_rate from dim_early_warning_comm_d t1
inner join b t2 on t1.km_comple_rate < t2.index_value
),
e as( -- 要推送的总部人员
select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1
inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员'
),
f as( -- 要推送的片区人员
select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1
inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员'
inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth)
),
g as( -- 要推送的项目人员
select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1
inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员'
inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth)
)
-- 要推送的人员合集
select username,LoginCode,user_type,ProjectAuth from e
union all
select username,LoginCode,user_type,ProjectAuth from f
union all
select username,LoginCode,user_type,ProjectAuth from g
;
-- ======================================
-- 预警-项目级-客满完成率-85%
-- ======================================
with a as( -- 所有有角色的人员
select t1.username,t3.name as role_name from finedb.fine_user t1
inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId
inner join finedb.fine_custom_role t3 on t2.roleId = t3.id
),
b as( -- 找到单条预警规则**
select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning
where index_name = '客满完成率'
and comm_organ = '项目'
and index_value = '0.85'
limit 1
),
c as( -- 找到关联的用户
select distinct username from b
join a on FIND_IN_SET(a.role_name,b.mang_organ)
),
d as( -- 找到规则下受影响的项目**
select t1.organ_name,t1.comm_name,t1.km_comple_rate from dim_early_warning_comm_d t1
inner join b t2 on t1.km_comple_rate < t2.index_value
),
e as( -- 要推送的总部人员
select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1
inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员'
),
f as( -- 要推送的片区人员
select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1
inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员'
inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth)
),
g as( -- 要推送的项目人员
select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1
inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员'
inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth)
)
-- 要推送的人员合集
select username,LoginCode,user_type,ProjectAuth from e
union all
select username,LoginCode,user_type,ProjectAuth from f
union all
select username,LoginCode,user_type,ProjectAuth from g
;
-- ======================================
-- 预警-项目级-客满完成率-75%
-- ======================================
with a as( -- 所有有角色的人员
select t1.username,t3.name as role_name from finedb.fine_user t1
inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId
inner join finedb.fine_custom_role t3 on t2.roleId = t3.id
),
b as( -- 找到单条预警规则**
select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning
where index_name = '客满完成率'
and comm_organ = '项目'
and index_value = '0.75'
limit 1
),
c as( -- 找到关联的用户
select distinct username from b
join a on FIND_IN_SET(a.role_name,b.mang_organ)
),
d as( -- 找到规则下受影响的项目**
select t1.organ_name,t1.comm_name,t1.km_comple_rate from dim_early_warning_comm_d t1
inner join b t2 on t1.km_comple_rate < t2.index_value
),
e as( -- 要推送的总部人员
select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1
inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员'
),
f as( -- 要推送的片区人员
select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1
inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员'
inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth)
),
g as( -- 要推送的项目人员
select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1
inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员'
inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth)
)
-- 要推送的人员合集
select username,LoginCode,user_type,ProjectAuth from e
union all
select username,LoginCode,user_type,ProjectAuth from f
union all
select username,LoginCode,user_type,ProjectAuth from g
;