学工信息大屏出错修改
This commit is contained in:
@@ -710,34 +710,69 @@
|
|||||||
order by quantity desc limit 4
|
order by quantity desc limit 4
|
||||||
</select>
|
</select>
|
||||||
<select id="getCountbyCity" resultType="java.util.Map">
|
<select id="getCountbyCity" resultType="java.util.Map">
|
||||||
select *
|
SELECT
|
||||||
from (select (case
|
city,
|
||||||
when b.id_card = 4501 then '南宁市'
|
SUM(total_count) AS total_count, -- 合并外省总人数
|
||||||
when b.id_card = 4502 then '柳州市'
|
SUM(male_count) AS male_count, -- 合并外省男生数
|
||||||
when b.id_card = 4503 then '桂林市'
|
SUM(female_count) AS female_count,-- 合并外省女生数
|
||||||
when b.id_card = 4504 then '梧州市'
|
-- 若需显示身份证前缀,外省统一标为“外省”,广西保留原前缀(可选)
|
||||||
when b.id_card = 4505 then '北海市'
|
CASE WHEN city = '外省' THEN '外省' ELSE GROUP_CONCAT(DISTINCT 身份证前缀 SEPARATOR ',') END AS 身份证前缀
|
||||||
when b.id_card = 4506 then '防城港市'
|
FROM (
|
||||||
when b.id_card = 4507 then '钦州市'
|
SELECT
|
||||||
when b.id_card = 4508 then '贵港市'
|
CASE
|
||||||
when b.id_card = 4509 then '玉林市'
|
-- 广西地市精准匹配
|
||||||
when b.id_card = 4510 then '百色市'
|
WHEN b.id_card = '4501' THEN '南宁市'
|
||||||
when b.id_card = 4511 then '贺州市'
|
WHEN b.id_card = '4502' THEN '柳州市'
|
||||||
when b.id_card = 4512 then '河池市'
|
WHEN b.id_card = '4503' THEN '桂林市'
|
||||||
when b.id_card = 4513 then '来宾市'
|
WHEN b.id_card = '4504' THEN '梧州市'
|
||||||
when b.id_card = 4514 then '崇左市'
|
WHEN b.id_card = '4505' THEN '北海市'
|
||||||
end) as city,
|
WHEN b.id_card = '4506' THEN '防城港市'
|
||||||
|
WHEN b.id_card = '4507' THEN '钦州市'
|
||||||
|
WHEN b.id_card = '4508' THEN '贵港市'
|
||||||
|
WHEN b.id_card = '4509' THEN '玉林市'
|
||||||
|
WHEN b.id_card = '4510' THEN '百色市'
|
||||||
|
WHEN b.id_card = '4511' THEN '贺州市'
|
||||||
|
WHEN b.id_card = '4512' THEN '河池市'
|
||||||
|
WHEN b.id_card = '4513' THEN '来宾市'
|
||||||
|
WHEN b.id_card = '4514' THEN '崇左市'
|
||||||
|
-- 广西其他编码兜底
|
||||||
|
WHEN b.id_card LIKE '45%' THEN '广西-其他地区'
|
||||||
|
-- 所有非广西编码统一标为“外省”
|
||||||
|
ELSE '外省'
|
||||||
|
END AS city,
|
||||||
total_count,
|
total_count,
|
||||||
male_count,
|
male_count,
|
||||||
female_count
|
female_count,
|
||||||
from (select left (AES_DECRYPT(UNHEX(id_card), 'zhxg'), 4) as id_card, count (1) as total_count, sum (case when gender='男' then 1 else 0 end) as male_count, sum (case when gender='女' then 1 else 0 end) as female_count
|
b.id_card AS 身份证前缀
|
||||||
from srs_student d left join srs_class e
|
FROM (
|
||||||
on d.class_id=e.class_id
|
SELECT
|
||||||
left join srs_grade f on f.grade_id=e.grade_id
|
t.id_card,
|
||||||
where f.grade_status in (1, 3)
|
COUNT(1) AS total_count,
|
||||||
GROUP BY left (AES_DECRYPT(UNHEX(id_card), 'zhxg'), 4)) b) c
|
SUM(CASE WHEN COALESCE(gender, '') = '男' THEN 1 ELSE 0 END) AS male_count,
|
||||||
where c.city is not null;
|
SUM(CASE WHEN COALESCE(gender, '') = '女' THEN 1 ELSE 0 END) AS female_count
|
||||||
|
FROM (
|
||||||
|
SELECT
|
||||||
|
-- 处理解密NULL的情况:转为空字符串
|
||||||
|
COALESCE(LEFT(AES_DECRYPT(UNHEX(id_card), 'zhxg'), 4), '') AS id_card,
|
||||||
|
gender
|
||||||
|
FROM srs_student d
|
||||||
|
LEFT JOIN srs_class e ON d.class_id = e.class_id
|
||||||
|
LEFT JOIN srs_grade f ON f.grade_id = e.grade_id
|
||||||
|
WHERE f.grade_status IN (1, 3)
|
||||||
|
) t
|
||||||
|
GROUP BY t.id_card
|
||||||
|
) b
|
||||||
|
) c
|
||||||
|
-- 按 city 分组:广西各地市单独分组,外省合并为一组
|
||||||
|
GROUP BY city
|
||||||
|
-- 可选:排序(广西地市在前,外省在后)
|
||||||
|
ORDER BY
|
||||||
|
CASE
|
||||||
|
WHEN city = '外省' THEN 2
|
||||||
|
WHEN city = '广西-其他地区' THEN 1
|
||||||
|
ELSE 0
|
||||||
|
END,
|
||||||
|
city;
|
||||||
</select>
|
</select>
|
||||||
<select id="getSchoolCountbyGrade" resultType="java.util.Map">
|
<select id="getSchoolCountbyGrade" resultType="java.util.Map">
|
||||||
select c.grade_code, count(1) as number
|
select c.grade_code, count(1) as number
|
||||||
@@ -762,33 +797,49 @@
|
|||||||
and gender is not null
|
and gender is not null
|
||||||
</select>
|
</select>
|
||||||
<select id="getNotSchoolTotalCount" resultType="java.util.Map">
|
<select id="getNotSchoolTotalCount" resultType="java.util.Map">
|
||||||
select sum(total_count) as number
|
SELECT SUM(total_count) AS number
|
||||||
from (select (case
|
FROM (
|
||||||
when b.id_card = 4501 then '南宁市'
|
SELECT
|
||||||
when b.id_card = 4502 then '柳州市'
|
CASE
|
||||||
when b.id_card = 4503 then '桂林市'
|
WHEN b.id_card = 4501 THEN '南宁市'
|
||||||
when b.id_card = 4504 then '梧州市'
|
WHEN b.id_card = 4502 THEN '柳州市'
|
||||||
when b.id_card = 4505 then '北海市'
|
WHEN b.id_card = 4503 THEN '桂林市'
|
||||||
when b.id_card = 4506 then '防城港市'
|
WHEN b.id_card = 4504 THEN '梧州市'
|
||||||
when b.id_card = 4507 then '钦州市'
|
WHEN b.id_card = 4505 THEN '北海市'
|
||||||
when b.id_card = 4508 then '贵港市'
|
WHEN b.id_card = 4506 THEN '防城港市'
|
||||||
when b.id_card = 4509 then '玉林市'
|
WHEN b.id_card = 4507 THEN '钦州市'
|
||||||
when b.id_card = 4510 then '百色市'
|
WHEN b.id_card = 4508 THEN '贵港市'
|
||||||
when b.id_card = 4511 then '贺州市'
|
WHEN b.id_card = 4509 THEN '玉林市'
|
||||||
when b.id_card = 4512 then '河池市'
|
WHEN b.id_card = 4510 THEN '百色市'
|
||||||
when b.id_card = 4513 then '来宾市'
|
WHEN b.id_card = 4511 THEN '贺州市'
|
||||||
when b.id_card = 4514 then '崇左市'
|
WHEN b.id_card = 4512 THEN '河池市'
|
||||||
end) as city,
|
WHEN b.id_card = 4513 THEN '来宾市'
|
||||||
|
WHEN b.id_card = 4514 THEN '崇左市'
|
||||||
|
END AS city,
|
||||||
total_count,
|
total_count,
|
||||||
male_count,
|
male_count,
|
||||||
female_count
|
female_count
|
||||||
from (select left (AES_DECRYPT(UNHEX(id_card), 'zhxg'), 4) as id_card, count (1) as total_count, sum (case when gender='男' then 1 else 0 end) as male_count, sum (case when gender='女' then 1 else 0 end) as female_count
|
FROM (
|
||||||
from srs_student d left join srs_class e
|
-- 优化:先解密别名,避免GROUP BY重复计算解密逻辑
|
||||||
on d.class_id=e.class_id
|
SELECT
|
||||||
left join srs_grade f on f.grade_id=e.grade_id
|
t.id_card,
|
||||||
where f.grade_status in (1, 3)
|
COUNT(1) AS total_count, -- 关键:COUNT与括号无空格
|
||||||
GROUP BY left (AES_DECRYPT(UNHEX(id_card), 'zhxg'), 4)) b) c
|
SUM(CASE WHEN gender = '男' THEN 1 ELSE 0 END) AS male_count,
|
||||||
where c.city is null
|
SUM(CASE WHEN gender = '女' THEN 1 ELSE 0 END) AS female_count
|
||||||
|
FROM (
|
||||||
|
SELECT
|
||||||
|
LEFT(AES_DECRYPT(UNHEX(id_card), 'zhxg'), 4) AS id_card, -- 关键:LEFT与括号无空格
|
||||||
|
gender
|
||||||
|
FROM srs_student d
|
||||||
|
LEFT JOIN srs_class e ON d.class_id = e.class_id
|
||||||
|
LEFT JOIN srs_grade f ON f.grade_id = e.grade_id
|
||||||
|
WHERE f.grade_status IN (1, 3)
|
||||||
|
) t
|
||||||
|
GROUP BY t.id_card -- 直接用别名,避免重复解密
|
||||||
|
) b
|
||||||
|
) c
|
||||||
|
WHERE c.city IS NULL;
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
<select id="getMajorsCount" resultType="java.util.Map">
|
<select id="getMajorsCount" resultType="java.util.Map">
|
||||||
select d.dept_name as deptName,
|
select d.dept_name as deptName,
|
||||||
|
|||||||
Reference in New Issue
Block a user