java - 有没有办法在不选择 1 乘 1 的情况下按百分比减少一个值并增加同一个表中的其他值

标签 java sql database sqlite

我需要帮助构建一个 SQL 查询,我会发布我的作业,解释起来有点棘手......所以你可以更好地了解我的问题是什么:

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

伦敦市(使用谷歌翻译,如有错误请见谅):600000居民

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_municipalities.

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

那么,有没有办法不用一一选择就可以改变 Chief city 的居民百分比和改变 Municipalities?

我在想这样的事情:

set tab_municipalities update London=(London*1.02);

我的问题来了...我如何将主要城镇的增量“散布”到每个自治市,从而减少其居民?抱歉,如果我写了所有这些细节,但我想更清楚地了解我必须做什么...我需要在 Java 项目中传输此查询。

感谢您的帮助,抱歉我的英语不好。

最佳答案

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

更新时使用CASE

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

关于java - 有没有办法在不选择 1 乘 1 的情况下按百分比减少一个值并增加同一个表中的其他值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56111195/

相关文章:

java - H2 不识别 regexp_like

java - 如何从 junit-tests 中的 .properties 文件读取字符串?

mysql - SQL代码需要帮助理解

使用sqlite3查询时MySQL语法错误

PHP 和 MySQL 图片一键 ActionScript

ruby-on-rails - Capistrano 部署删除数据库?

java - 具有 Maven 和 SQL Server 类未找到异常的微服务

sql - 如何在 DBIx::Class 结果集搜索中检索每个组中的最新记录?

Redis 翻译设计

java - 如何忽略 IntelliJ 中的特定 TODO