【问题标题】:SQL Increase value in column by percentage and out from criteria in another tableSQL按百分比增加列中的值,并从另一个表中的条件中增加值
【发布时间】:2014-06-07 01:08:43
【问题描述】:

所以我有两张桌子,我想同时使用这两张桌子。

第一个。

工厂fidfnameaddress

工人widwnamefidsalary

我想把在超过 100 名工人的工厂工作的工人的工资提高 10%。

这是怎么做到的?

如果超过100个id,是不是需要搜索工厂的fid

【问题讨论】:

  • 你真的需要做UPDATE还是用SELECT输出新工资?
  • 我需要更新数据库并输出它。是否可以一次查询?
  • 什么是 RDBMS(SQL ServerOracle 等)?
  • 是的,您可以在PostgeSQL 中使用UPDATE ... RETURNING * 进行一次查询

标签: sql postgresql sql-update


【解决方案1】:

您可以使用 group by 和 having 子句来获取拥有超过 100 名员工的 fid,如下所示。

select fid from Worker  group by fid  having count(wid) > 100

如果你想增加 10% 的薪水,那么使用在第一次查询中获取的 fid 并更新

update Worker set salary = salary * 1.1 where fid IN (select fid from Worker  group by fid  having count(wid) > 100)

10% of salary = 1.1 * salary

【讨论】:

  • 检查您的GROUP BY。 Aldo 你能简化 10% 的增长算术吗?
  • @PM 谢谢。这是拼写错误。我将列名更改为 GROUP BY 子句中的正确值。希望它现在可以工作
  • SET salary = 1.1 * salary
猜你喜欢
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2019-09-13
  • 1970-01-01
  • 2022-11-05
  • 2020-10-25
  • 2019-01-16
相关资源
最近更新 更多