SQL-计算多次计算的城市之间的平均距离,交换列中的城市

SQL-计算多次计算的城市之间的平均距离,交换列中的城市,sql,sql-server,Sql,Sql Server,一张表存储了从一个城市到另一个城市的距离。每个城市对由不同的人用不同的方法进行多次测量。结果是: (S-city, D-city, Distance) (City A, City B, 30), (City A, City B, 32), (City B, City A, 29), (City A, City C, 40), (City C, City A, 41) 编写一个SQL来显示城市的平均距离(城市对中没有重复,无论方向如何) 我的尝试: 我尝试将A到B或B到A作为路线1,A到C或C到

一张表存储了从一个城市到另一个城市的距离。每个城市对由不同的人用不同的方法进行多次测量。结果是:

(S-city, D-city, Distance)
(City A, City B, 30),
(City A, City B, 32),
(City B, City A, 29),
(City A, City C, 40),
(City C, City A, 41)
编写一个SQL来显示城市的平均距离(城市对中没有重复,无论方向如何)

我的尝试: 我尝试将A到B或B到A作为路线1,A到C或C到A作为路线2的通勤分配为另一个路线列,按路线列分组,并找到平均距离

改变表格谷歌 添加路由方向int null

更新谷歌 设置路线方向= (S_city='cityA'或S_city='cityB')和(D_city='cityA'或D_city='cityB'时的情况) 那么1 其他2 结束

选择路线方向,平均(距离) 来自谷歌 按路线和方向分组 按路线和方向订购

它缩小到2行cityA cityB和cityA cityC,具有平均值。 这些值不正确,而且当添加多个城市时,此代码将失败


帮助?

获取不同对的用例:

select 
  (case when scity < dcity then scity else dcity end) city1, 
  (case when scity < dcity then dcity else scity end) city2,
  avg(cast(distance as float)) distance
from tablename 
group by
  (case when scity < dcity then scity else dcity end), 
  (case when scity < dcity then dcity else scity end)
选择
(当城市<城市,则城市结束)城市1,
(当城市<城市然后城市其他城市结束时)城市2,
平均(铸造(浮动距离))距离
从表名
分组
(当scity

请参阅

并发布您的尝试。Mysql和ms sql server是两种不同的产品,具有不同的sql实现和其他功能。因此,我删除了混淆的产品标签。请加上你实际使用的那个。此外,请不要在这里复制你的家庭作业任务。请给出一个合理的解决方法。也尝试了这个方法,它为cityA cityB和cityA cityC提供了一行,但给出了错误的值:选择t1.s_city,t2.d_city,avg(cast(t2.distance as float))作为平均值,从google t1内部加入google t2,在t1.s_city=t2.s_city和t1.d_city t2.d_city组中按t1.s_city,t2.d_city,t2.d_city