我需要建立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项目中传输此查询。
感谢您的帮助,对不起我的英语不好。
答案 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链接市政当局。这样一来,您就可以更清楚地了解数据,因为目前您已经对该表进行了混合使用。