如何修正SQL代码以计算指定SSN员工与其他员工的住宅平均距离
修正SQL代码并计算员工住宅平均距离
首先你的原始SQL存在几个明显的语法和逻辑问题:
- 误用了中文单引号(
’731’),SQL仅支持英文单引号' - 子查询的嵌套结构混乱,出现重复的
FROM关键字,别名定义也不符合SQL语法规范 - 逻辑上偏离了需求:你需要筛选SSN为
'123456789'的员工,但代码里错误地用了hno='731'作为条件
修正后的SQL代码
针对「计算SSN为'123456789'的员工住宅与其他所有员工住宅的平均距离」这个需求,正确的SQL写法如下:
SELECT AVG(ABS(e.hno - target_emp.hno)) AS average_distance FROM employee e -- 单独获取目标员工的住宅数值 CROSS JOIN ( SELECT hno FROM employee WHERE SSN = '123456789' ) AS target_emp -- 排除目标员工自身(避免计算与自己的距离) WHERE e.SSN != '123456789';
最终结果
假设数据表中的数据准确,运行修正后的代码后,得到的正确结果为 选项c:1133.38(这类距离计算通常保留两位小数,与该选项精度匹配)
内容的提问来源于stack exchange,提问作者Karan Hindocha
相关产品推荐
相关产品推荐

