如何在mysql中找到平均差异?

VIB*_*YAL 0 mysql sql

考虑一个存储员工详细信息的表员工。

ssn : social security number of the employee
address : storing the address of the employee
Run Code Online (Sandbox Code Playgroud)

查看员工表中的地址字段,您会注意到所有员工都居住在“Fondren, Houston, TX”。将地址字段中的整数视为门牌号。把两栋房子的距离看成是门牌号的差,所以2号到38号的距离是36个单位。编写一个查询来确定该ssn = '123456789'员工的房屋与其他员工的房屋之间的平均距离。将答案打印到小数点后两位。确保答案的格式为逗号,如 x,xxx.xx 。

有人可以帮我解决这个问题吗?

我不想使用 SQL 函数。

我所做的查询是:

SELECT 
    avg(
    abs(CAST(address AS UNSIGNED) - 
    SELECT CAST(address AS UNSIGNED) from test.test where ssn = 1234)
    ) as average from test.test;
Run Code Online (Sandbox Code Playgroud)

Nic*_*ick 5

假设您不想包括从员工家到他们自己家的距离,您需要计算不包括该距离的平均值。一种方法是CROSS JOIN创建一张包括感兴趣的雇员的雇员房屋数量表,以及一个感兴趣的雇员房屋数量表。然后,您可以计算SUM绝对差值,并将其除以行数以获得平均值。然后,您可以使用FORMAT以所需格式获取输出:

SELECT FORMAT(SUM(ABS(oth - emp)) / COUNT(oth), 2) AS average
FROM (
      SELECT CAST(address AS SIGNED) AS oth
      FROM test
      WHERE ssn != '123456789'
     ) t
CROSS JOIN (
      SELECT CAST(address AS SIGNED) AS emp
      FROM test
      WHERE ssn = '123456789'
     ) t2
Run Code Online (Sandbox Code Playgroud)

SQLFiddle 上的演示