Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有一种方法可以在不选择1乘1的情况下,将某个值减少一个百分比并增加同一表中的其他值_Java_Sql_Database_Sqlite - Fatal编程技术网

Java 有没有一种方法可以在不选择1乘1的情况下,将某个值减少一个百分比并增加同一表中的其他值

Java 有没有一种方法可以在不选择1乘1的情况下,将某个值减少一个百分比并增加同一表中的其他值,java,sql,database,sqlite,Java,Sql,Database,Sqlite,我需要帮助构建SQL查询,我会发布我的作业,解释起来有点棘手…这样你就可以更好地了解我的问题: 将主要城镇的人口增加1%,代表城市居民迁往主要城镇。。 例如: 伦敦市和市政当局(使用谷歌翻译,如果有错误,请道歉):60万居民 London city: 300000 inh. Municipality1:50000 inh Municipality1:80000 inh Municipality1:70000 inh Municipality1:100000 inh 增加

我需要帮助构建SQL查询,我会发布我的作业,解释起来有点棘手…这样你就可以更好地了解我的问题:

将主要城镇的人口增加1%,代表城市居民迁往主要城镇。。 例如:

伦敦市和市政当局(使用谷歌翻译,如果有错误,请道歉):60万居民

London city: 300000 inh.
   Municipality1:50000 inh
   Municipality1:80000 inh
   Municipality1:70000 inh
   Municipality1:100000 inh
增加城市居民2%

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

我的数据库有这个表 tab_市

**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项目中传输此查询


谢谢你的帮助,很抱歉我的英语不好。

你的思路是正确的,但思考得太准确了。在SQL中,更新表并设置列

 UPDATE tab_municipalities
 set inhabitants = inhabitants*1.02 
 WHERE province='London' and municipality_description='London'
然后,您可以运行第二次更新来执行计算,以减少:-

 UPDATE tab_municipalities
 set inhabitants = inhabitants*0.98 
 WHERE province='London' and municipality_description<>'London'
更新选项卡\u
集合居民=居民*0.98
其中省为“伦敦”,市为“伦敦”

理想情况下,您需要将主要城镇与其成员分开。您可以为“城镇”创建一个单独的表格,然后通过城镇id链接市政当局。这将使您的数据更加清晰,因为目前您对该表格有混合用途。

因为在本例中,伦敦市占总人口的一半,所以我们可以简单地为该市添加2%,并直接从所有其他行中删除2%(不使用需要分配的金额)

更新时使用案例

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

这不仅会增加伦敦金融城的人口,还会增加所有城市的人口(这些城市的人口应该有所减少)。定义每条线减少多少的规则是什么?如果伦敦增加8000人,我们是从其他城市拿走2000人?还是从一个城市拿走5000人,从三个城市拿走1000人?或者其他什么?