SQL CASE
SELECT L.id, L.name, L.zero_three_num, L.four_six_num, seven_nine_num, ten_or_more_num,
(L.zero_three_num+L.four_six_num+seven_nine_num+ten_or_more_num) total
FROM (SELECT r.id, r.name,
CASE ISNULL(s.zero_three_num,'')--处理null值,因为null与任务数相加都是null,这样结果集无法排序.
WHEN '' THEN 0 ELSE s.zero_three_num --如果不是null值则,使用原来的值.
END zero_three_num,--0至3岁人的数量
CASE ISNULL(s.four_six_num,'')
WHEN '' THEN 0 ELSE s.four_six_num
END four_six_num,--4至6岁
CASE ISNULL(s.seven_nine_num,'')
WHEN '' THEN 0 ELSE s.seven_nine_num
END seven_nine_num,-- 7至9岁
CASE ISNULL(s.ten_or_more_num,'')
WHEN '' THEN 0 ELSE s.ten_or_more_num
END ten_or_more_num --10岁以上
FROM gos_region r
LEFT OUTER JOIN
(SELECT t.${region_id_macro},
SUM(
CASE
WHEN t.child_age IN (0,1,2,3) THEN 1 ELSE 0
END) zero_three_num,--0至3岁人的数量
SUM(
CASE
WHEN t.child_age IN (4,5,6) THEN 1 ELSE 0
END) four_six_num, --4至6岁
SUM(
CASE
WHEN t.child_age IN (7,8,9) THEN 1 ELSE 0
END) seven_nine_num, -- 7至9岁
SUM(
CASE
WHEN t.child_age >=10 THEN 1 ELSE 0
END) ten_or_more_num --10岁以上
FROM "Xxx_INFO" t
WHERE to_char(t.publish_date, 'yyyy-MM-dd') >= ?
and to_char(t.publish_date, 'yyyy-MM-dd') <= ? AND t.publish_state='1'
GROUP BY t.${region_id_macro}
) s
ON r.id = s.${region_id_macro}
WHERE ${g2s_region_where} AND r.use2_flag=1
) L
ORDER BY total DESC;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架