有没有一种方法可以将值减少一个百分比,而在同一表格中增加其他值而不用选择1比1

时间:2019-05-13 11:14:44

标签: java sql database sqlite

我需要建立SQL查询的帮助,我将张贴作业,解释起来有些棘手...因此您可以更好地了解我的问题:

将主要城镇的人口增加1%,代表了从城市搬迁到主要城镇的居民。 示例:

伦敦市和直辖市(使用Google翻译,如果有错误,抱歉):600,000居民

London city: 300000 inh.
   Municipality1:50000 inh
   Municipality1:80000 inh
   Municipality1:70000 inh
   Municipality1:100000 inh

将城市inh增加2%

London city: 306000 inh.
   Municipality1:49000 inh
   Municipality1:78400 inh
   Municipality1:68600 inh
   Municipality1:98000 inh

我的数据库有此表 tab_municipalities。

**Municipality_description**|**Inhabitants**| **Province**
London-------------------------|300k---------| London
Muni1---------------------------|50k-----------| London
Muni2---------------------------|80k-----------| London
Muni3---------------------------|70k-----------| London
Muni4---------------------------|100k---------| London

那么,有没有一种方法可以改变居民的主要城市比例和改变市政府,而不必一一选择?

我在想这样的事情:

set tab_municipalities update London=(London*1.02);

我的问题来了...我该如何“分散”每个市政当局的主要城镇,以减少其居民?抱歉,如果我写了所有这些详细信息,但是我想更清楚地知道我必须做什么...我需要在Java项目中传输此查询。

感谢您的帮助,对不起我的英语不好。

2 个答案:

答案 0 :(得分:1)

由于在此示例中,伦敦市占总人口的一半,我们可以简单地为该市增加2%,并直接从所有其他行中删除2%(无需使用需要分配的总和)。

更新时使用大写字母

UPDATE tab_municipalities 
SET Inhabitants = CASE WHEN Municipality_description = 'London' THEN Inhabitants * 1.02
                  ELSE Inhabitants * 0.98
                  END
WHERE Province = 'London'

答案 1 :(得分:0)

您正在按照正确的方向工作,但是思考得太精确了。在SQL中,您更新表并设置列

 UPDATE tab_municipalities
 set inhabitants = inhabitants*1.02 
 WHERE province='London' and municipality_description='London'

然后您可以运行第二个UPDATE来执行计算以减少市政面积:-

 UPDATE tab_municipalities
 set inhabitants = inhabitants*0.98 
 WHERE province='London' and municipality_description<>'London'

理想情况下,您需要将酋长镇与其成员分开。您可以为“镇”创建一个单独的表,然后通过Town_id链接市政当局。这样一来,您就可以更清楚地了解数据,因为目前您已经对该表进行了混合使用。