【发布时间】:2020-04-02 20:36:48
【问题描述】:
我有一个名为“tax_info”的表,这个表存储了我所在城市的地税信息,它是这样的:
taxpayer_code | condominium_num | lot_area | built_area
-------------------------------------------------------------
0010030078-2 | 00-0 | 143 | 130
0010030079-1 | 02-7 | 283 | 57
0010030080-1 | 02-7 | 283 | 48
0010030081-1 | 02-7 | 283 | 50
纳税人代码前3位表示市区,后3位表示区内街区,如果公寓号码为00-0,后4位可以表示街区内的地段,或公寓, 或 store 等,如果公寓编号不是 00-0,在这种情况下,所有相同的公寓编号都指块内的同一地段。
我想要做的是传递“taxpayer_code”列表并获取地段的“lot_area”和“built_area”。问题是,如果这个人住在公寓里,她的公寓只是该地段总建筑面积的一小部分。所以,如果我搜索代码 0010030078%(-X 数字无关紧要),结果是: 地块面积 = 143 和建筑面积 = 130
但如果我搜索 0010030080%,我期望的结果是: 地块面积 = 283 和建筑面积 155
如果我搜索 0010030078%, 0010030079%,结果: 地块面积 = 426 和建筑面积 285
所以数据库应该获取纳税人代码,然后查看每个传递的代码的公寓号码是否不同于 00-0,如果是,它应该将共享相同公寓号码的所有其他纳税人代码添加到总和中同一区和街区。 (理想情况下,如果通过了属于不同地区或街区的税码,则应返回警告,并且如果将更多税码添加到总和中,则添加所有代码的列表会很好,但如果这太多了也没关系麻烦!)。
我是 SQL 新手,无法理解这一点,感谢您给我的每一个帮助,谢谢!
【问题讨论】:
-
"纳税人代码前 3 位是市区,后 3 位是市区内的街区" - 这是一个非常糟糕的设计。你不应该在一个原子值中存储多个不同的东西
-
我同意这一点,但这就是城市的存储方式,或者至少是他们提供数据的方式,您认为最好创建一个新表来破坏不同列中的代码?
标签: sql postgresql postgresql-12