如何组合两个独立查询的结果?

9rbhqvlz  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(353)

我有一个包含3列的表:id、name和salary。
共有2例。1,其中“薪资”列缺少所有0,其他为原始薪资。问题是:两人的平均工资有什么区别?我得到了有0和没有0的平均工资,但不明白我怎么能找到差异?

Select AVG(Salary) AS Salary_with0
from Employees
where Salary regexp '[0]'

UNION ALL

select AVG(Salary) AS Salary_without0
from Employees
where Salary NOT regexp '[0]'

我知道使用replace有更简单的方法,但我真的很想了解这一点。
谢谢

blpfk2vs

blpfk2vs1#

回答你的问题很简单:

Select AVG(case when Salary regexp '[0]' then Salary end) AS Salary_with0,
       AVG(case when Salary not regexp '[0]' then Salary end) AS Salary_with0,       
from Employees;

你可以减去这些值得到差值。
这是另一回事。通常情况下,人们不会对数字使用正则表达式。而“丢失的零”作为对正在发生的事情的描述似乎相当奇怪。

相关问题