You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

以MICROSOFT为基准点计算公司距离并新增列的SQL查询求助

解决方案

原表结构与数据

COMPANYpointXpointY
MICROSOFT12.43476.810
AMAZON1.779290.122
APPLE601.840333.910

需求说明

将MICROSOFT的坐标设为基准点,计算各公司与该基准点的欧几里得距离,并将结果作为新列添加到查询结果中。

SQL 查询语句

方法1:子查询获取基准点坐标

SELECT
    t.COMPANY,
    t.pointX,
    t.pointY,
    -- 欧几里得距离公式:√[(x1-x0)² + (y1-y0)²]
    ROUND(
        SQRT(
            POWER(t.pointX - (SELECT pointX FROM myTable WHERE COMPANY = 'MICROSOFT'), 2) +
            POWER(t.pointY - (SELECT pointY FROM myTable WHERE COMPANY = 'MICROSOFT'), 2)
        ),
        3 -- 保留3位小数,可按需调整
    ) AS distance_from_microsoft
FROM myTable t;

方法2:CROSS JOIN关联基准点(性能更优)

如果担心子查询重复执行,可通过CROSS JOIN一次性获取基准点数据:

SELECT
    t.COMPANY,
    t.pointX,
    t.pointY,
    ROUND(
        SQRT(
            POWER(t.pointX - m.pointX, 2) +
            POWER(t.pointY - m.pointY, 2)
        ),
        3
    ) AS distance_from_microsoft
FROM myTable t
CROSS JOIN myTable m
WHERE m.COMPANY = 'MICROSOFT';

查询结果示例

COMPANYpointXpointYdistance_from_microsoft
MICROSOFT12.43476.8100.000
AMAZON1.779290.122214.217
APPLE601.840333.910654.678

说明

  • 欧几里得距离是平面坐标系中两点间的直线距离公式,适配本题的二维坐标计算场景。
  • ROUND()函数用于控制结果小数位数,可根据需求修改第二个参数。
  • 两种方法输出结果一致,CROSS JOIN在数据量较大时性能更稳定,因为仅查询一次基准点数据。

内容的提问来源于stack exchange,提问作者MarcelloWrites

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:24:26