当前位置: 首页 > news >正文

AI教我一条SQL实现明细转树形结构

AI教我一条SQL实现明细转树形结构

1. 原始数据

序号 COUNTRY PROVINCE CITY GAME
1 中国 广东 深圳 地心侠士
2 中国 广东 广州 地心侠士
3 中国 江苏 南京 地心侠士
4 美国 加州 洛杉矶 地心侠士

2. 目标数据

序号 节点名称 节点ID 父级节点ID 国家 城市 微信小游戏
1 美国 美国 0 美国
2 加州 美国加州 美国 美国 加州
3 洛杉矶 美国加州洛杉矶 美国加州 美国 加州 洛杉矶 地心侠士
4 中国 中国 0 中国
5 广东 中国广东 中国 中国 广东
6 广州 中国广东广州 中国广东 中国 广东 广州 地心侠士
7 深圳 中国广东深圳 中国广东 中国 广东 深圳 地心侠士
8 江苏 中国江苏 中国 中国 江苏
9 南京 中国江苏南京 中国江苏 中国 江苏 南京 地心侠士

3. 实现思路

从一个明细数据,提取多余的父级信息,可以使用不同维度的分组进行提取.可以逐层获取,也可以使用GROUPING SETS
减少分组代码量.比如以上提供的目标数据中可以如下汇总实现:

  • 汇总国家层级,按照country分组汇总,得到中国,美国,两条数据
  • 汇总省份层级,按照country,province,得到中国广东,中国江苏,美国加州三条数据
  • 汇总明细数据,直接按照所有列进行分组,得到明细数据

以上步骤,可以解决数据问题,但是数据之间的层级关系体现不出来,需要添加三列,分别表示节点名称,节点ID,父级节点ID
可以说使用分组函数GROUPING_ID实现,分组列为二进制,包含分组为0不包含为1,国家,省,明细三个分组值依次为

  • 汇总国家层级 GROUPING_ID(country, province, city),二进制 011 十进制 3,节点名称 country 节点ID country 父级节点ID '0'
  • 汇总省份层级 GROUPING_ID(country, province, city),二进制 001 十进制 1,节点名称 province 节点ID country||province 父级节点ID country
  • 汇总明细层级 GROUPING_ID(country, province, city),二进制 000 十进制 0,节点名称 city 节点ID country||province||city 父级节点ID country||province

分组函数详细参考可以查看 sql分组 group by rollup,cube,grouping sets,group_id,groupingId

WITH region_data AS (SELECT '中国' as country, '广东' as province, '深圳' as city ,'地心侠士' as game FROM dual UNION ALL SELECT '中国', '广东', '广州' ,'地心侠士' FROM dual UNION ALLSELECT '中国', '江苏', '南京','地心侠士' FROM dual UNION ALLSELECT '美国', '加州', '洛杉矶','地心侠士' FROM dual
)
SELECT CASE WHEN GROUPING_ID(country, province, city) = 0 THEN cityWHEN GROUPING_ID(country, province, city) = 1 THEN provinceWHEN GROUPING_ID(country, province, city) = 3 THEN countryEND AS 节点名称,CASE WHEN GROUPING_ID(country, province, city) = 0 THEN country||province||cityWHEN GROUPING_ID(country, province, city) = 1 THEN country||provinceWHEN GROUPING_ID(country, province, city) = 3 THEN countryEND AS 节点ID,CASE WHEN GROUPING_ID(country, province, city) = 0 THEN country||provinceWHEN GROUPING_ID(country, province, city) = 1 THEN countryWHEN GROUPING_ID(country, province, city) = 3 THEN '0'END AS 父级节点ID,country AS 国家,province AS 省,city AS 城市,game as 微信小游戏
FROM region_data
GROUP BY GROUPING SETS ((country, province, city,game),(country, province),     (country)               
)
ORDER BY country, province nulls first, city nulls first;

前端构造树形结构数据,传递给前端有时有特殊字符,方便处理,可以统一转换成16进制串,针对节点ID,父级节点ID,

  function NODEID_TO_RAWID(str in varchar2) return varchar2 isnew_str varchar2(1000);-- 微信公众: 小满小慢 20251113beginnew_str:=UTL_RAW.CAST_TO_RAW(str);return new_str;end;

4. 总结

实现过程使用AI辅助生成测试代码,通过一次交互提示词,返回目标代码.关注微信公众号[小满小慢],回复关键词AIGROUP可获取具体提示内容.

原文地址: https://mp.weixin.qq.com/s/9_A6cgohb8sX1N0RME0usQ

http://www.jsqmd.com/news/30028/

相关文章:

  • 十分钟读懂 Deepseek MTP(Multi-Token Prediction)
  • 2025年度中国工业制冷设备品牌排名:东洋制冷机靠不靠谱
  • dayday!!
  • 2025年山东外贸网站开发服务商权威推荐:本地网站建设/出海网站建设/科技网站建设服务商精选
  • 2025年油雾净化设备制造商:中国五大精密油雾净化设备靠谱供应商权威测评与深度解析
  • 2025年防盗盖封口机厂商权威推荐:铝盖旋盖机/压盖机/锁盖机源头厂家精选
  • 2025年冷鲜肉切片机制造企业权威推荐榜单:牛肉切片机/连续式鲜肉切片机/鲜肉切片机源头厂家精选
  • 适合高中数学辅导的培训机构怎么选?从基础到拔高这样挑不踩坑
  • pcb入门
  • 6.AUserDefaults 使用指南
  • S-PSC 5202 游记
  • 【科普】数据基础设施“三统一”是什么?
  • 2025年11月全屋定制品牌推荐评价:消费者满意度调查结果
  • 2025年11月全屋定制品牌推荐榜单:十大品牌综合对比与权威评测
  • Smartproxy提取指南——JSON-first 架构与参数化最佳实践 - Smart
  • 2025年11月远程控制软件评价排行:基于多维度数据对比
  • [PaperReading] GME: Improving Universal Multimodal Retrieval by Multimodal LLMs
  • 2025年10月深圳律师推荐榜:五家刑事辩护团队对比与中立评测
  • 2025年11月法律咨询律所推荐排名:用户需求匹配度全解析
  • 吴恩达深度学习课程二: 改善深层神经网络 第一周:深度学习的实践(五)归一化
  • 2025年11月市场地位认证机构排行解析:专业认证服务深度评测
  • 2025年10月深圳刑事律师推荐排行:五家真实团队的可验证指标全解析
  • 2025年项目管理软件排行榜前五!从需求到交付你怎么选? - RAIN
  • 2025年11月市场地位认证机构排名榜:服务维度与行业口碑全面解析
  • 2025年11月办公家具公司排名榜单:从资质到服务的全面解析
  • 学习一下压测和监控
  • 2025年11月办公家具公司推荐榜单:权威评测与综合对比分析
  • Spring IOC 容器和依赖注入(DI)
  • CSP-S 2025 赛时总结
  • MATLAB2025b安装教程