用SQL生成一份中国行政表
点击关注上方“SQL数据库开发”,设为“置顶或星标”,第一时间送达干货SQL专栏SQL基础知识第二版
SQL高级知识第二版
问题描述
在我们日常统计中,经常需要统计到全国各地区的一些销售情况,而全国各地区的行政区划是怎么样的,我们需要做一张省市区的基础表来一一对应。
问题分析
我们在网上通过查找每个省市区的地区编码,可以获取一份完整的省市区SQL脚本。如下图:
(具体的SQL脚本可以在“阅读原文”中获取,提取码:emwf )
我们通过分析可以得出省市区的层级关系,这样我们就可以根据这个层级关系来制作一份完整的行政区划表了。
解决办法
我们获取的原始表的表名叫China,下面我们来制作这个行政区划表
WITH CTE AS (SELECT ID,NAME,PId,1 AS LEVELFROM ChinaWHERE pId = 0UNION ALLSELECT t.id,t.NAME,t.pId,cte. LEVEL + 1 AS LEVELFROM China t JOIN CTE ON t.pId = CTE.id
)
使用我们之前介绍的递归查询,将PID和ID进行关联,找出每条记录的层级,用1,2,3,4来表示,如下图:
有了每个城市的层级标记,我们就可以根据层级标记来指定它们具体的城市等级。
SELECT
t1.name AS [省]
,t2.name AS [市]
,t3.name AS [县]
,t4.name AS [区]
FROM (SELECT * FROM CTE WHERE LEVEL=1) AS t1
LEFT JOIN
(SELECT * FROM CTE WHERE LEVEL=2) AS t2 ON t1.id=t2.pId
LEFT JOIN
(SELECT * FROM CTE WHERE LEVEL=3) AS t3 ON t2.id=t3.pId
LEFT JOIN
(SELECT * FROM CTE WHERE LEVEL=4) AS t4 ON t3.id=t4.pId
如下图:
这样一份完整的城市区划表就建好了。
最后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行
——End——后台回复关键字:1024,获取一份精心整理的技术干货
后台回复关键字:进群,带你进入高手如云的交流群。
推荐阅读
Linux之父:财务自由以后,我失眠了!
潘叔卖酒一个月能挣几个W?
如何写出高质量的 SQL 代码?
不懂就问:为什么 delete 表数据,磁盘空间还是被占用?
社会内卷的真正原因:华为内部论坛的这篇雄文火了
用SQL生成一份中国行政表相关推荐
- 一分钟生成1000份中国省会城市知识测试卷及答案
一.系统环境 Windows 10 22H2版,Windows Feature Experience Pack 120.2212.4190.0 Anaconda3-2022.05-Windows-x ...
- 如何用SQL生成一张日期维度表?
点击关注公众号,SQL干货及时获取 后台回复:1024,获取海量学习资源 问题描述 输入想要生成日历的年份,通过调用存储过程,即可生成该年的全部日历. 创建表结构 我们根据常见的日历表来创建一个含有年 ...
- 使用PowerDesigner导入SQL生成数据表模型
一直听公司做数据库的同事说用PowerDesigner设计数据库模型, 博主闲来无事决定拿来小试牛刀. 用SQL生成数据表模型: 1.启动PowerDesigner,选择"File" ...
- django 使用原生SQL语句反向生成MODELS.PY中的表结构
在一次工作中,有这么一个问题,就是要导入的数据字段不确定,但是还想使用django的ORM来对数据进行操作.. 琢磨了许久,弄个不完善的方案,但功能是能实现的,主要是思路.废话不多说了,丑陋的展示一下 ...
- 用友T+财务软件数据库——SQL生成含上级科目名称的标准化凭证表
select * from GL_Journal; select * from AA_Account; --标准化凭证表 drop table 用友凭证表; select * from 用友凭证表; ...
- 复用数据库之中国地区表(除台湾外精确到地级市)
SQL脚本.原po建表思路很不错,有点像没优化的并查集的感觉,我略作修改,在这里谢过了.建表语句就不写了,手动也可吧,表名location,一共426条记录,包括1个根节点中国,34个省.直辖市和行政 ...
- Hive Sql 大全(hive函数,hive表)
Hive Sql 大全 本节基本涵盖了Hive日常使用的所有SQL,因为SQL太多,所以将SQL进行了如下分类: 一.DDL语句(数据定义语句): 对数据库的操作:包含创建.修改数据库 对数据表的操作 ...
- 程序员/设计师能用上的 75 份速查表(转)
75 份速查表,由 vikas 收集整理,包括:jQuery.HTML.HTML5.CSS.CSS3.JavaScript.Photoshop .git.Linux.Java.Perl.PHP.Pyt ...
- 完整SQL分页存储过程(支持多表联接)
Code /********************************************************* * 作 用:数据分页(完整SQL分页存储过程(支持多表联接)) ...
最新文章
- 网络游戏外挂核心封包揭密
- python语言有哪两个系列_(转)Python学习笔记系列——Python是一种纯粹的语言
- HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面
- LeetCode - Easy - 14. Longest Common Prefix
- 洛谷 P1141 01迷宫(dfs)
- 大哥你需求里说只要工作流引擎组件,怎么真正需要的东西这么.悲剧了,客户需求无止境...
- Linux管道函数使用
- PHP 修改配置文件后重启命名
- Modelbuilder快速入门
- win10双显卡怎么切换amd和英特尔_win10双显卡怎么切换
- 跟我一起学docker(九)--持续系统集成了解下git
- 通过名称识别和处理弹出窗口
- jquery的blockUI遮罩层的使用
- PS模仿欢乐颂电视剧海报的水彩效果
- 输入输出管理:假脱机技术(SPOOLING)
- java dispose事件_求助!!为什么我的dispose()不起作用
- “Physically-Based Rendering for Indoor Scene Understanding Using Convolutional Neural Networks”论文阅读
- 重要极限一:x趋近于0,sinx/x的极限
- 百度沈抖:文心一言将通过百度智能云对外提供服务
- 罗森伯格助力杭州G20峰会保电工程-清江智能化变电站