我有一个包含3列的表:ID,Name和Salary。
有2例。 1,其中工资栏缺少全部0,其他工资列缺少原始工资。问题是:2之间的平均工资有什么区别?我得到平均工资有无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]'
我知道有更简单的方法可以使用替换,但我真的想了解这一点。
由于
答案 0 :(得分:0)
回答你的问题很容易:
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;
您可以减去这些值以获得差异。
实用程序这是另一回事。通常,人们不会在数字上使用正则表达式。并且"缺少零"对任何正在发生的事情的描述似乎都很奇怪。