【问题标题】:How would I solve this SQL exercise?我将如何解决这个 SQL 练习?
【发布时间】:2016-01-06 17:38:46
【问题描述】:

假设,我有一个表 EMPLOYEES,它有一个 SALARY 列,其中包括:

30250
35260
7340
60185

此外,假设我们有一个人在计算器上计算这些薪水,但“0”键已损坏。所以条目是:

325
3526
734
6185

现在我的任务是找出实际平均值与“断键”平均值之间的差异,以了解此人偏离了多少。我将如何获得“断键”平均值?

【问题讨论】:

  • 到目前为止您的查询是什么样的?
  • 我觉得我已经读过了。你对小黛比的最后一个问题是否已经结束,你又问了一遍?
  • 我删除了它并以消除所有歧义的方式再次提出问题。这不是学校作业。我在一个网站上练习 SQL,我试图弄清楚如何解决这个问题。不过我很欣赏这个假设。

标签: mysql sql select average


【解决方案1】:

您可以使用replace 函数删除零,然后减去两个平均值:

SELECT AVG(salary) - AVG(REPLACE(salary, '0', '')) AS mistake
FROM   employees

【讨论】:

  • 不知道替换功能。非常感谢!我认为有一种更简单的方法,而不是必须从 int 转换为 char,删除 0 然后将其转换回来。
  • @juice 是的,我知道,我也不喜欢这些隐式转换,但我想不出一种“数学”方式。
  • 感谢@MichaelMcGriff 的提琴!
【解决方案2】:

您需要找出哪一行处于错误状态? 您可以使用“左连接”语句,查找第一个表中的数据不在另一个表中

【讨论】:

    猜你喜欢
    • 2021-03-10
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多