SQL-计算城市之间的平均距离,计算出的乘以倍数,城市在交换列中

时间:2019-03-10 23:26:54

标签: 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到B分配为路线1,将A到C或C到A分配为路线2,作为另一条路线栏,按路线栏分组并找到平均距离。

Google变更表  添加route_direction int null

更新google  设置route_direction =  (S_city ='cityA'或S_city ='cityB')和(D_city ='cityA'或D_city ='cityB')  然后1  否则2  结束

选择路线方向,平均值(距离)  来自谷歌  按route_direction分组  按route_direction排序

将平均值缩小为两列cityA-cityB和cityA-cityC。 这些值不正确,而且当添加多个城市时,此代码也会失败。

帮助?

1 个答案:

答案 0 :(得分:1)

用例获得不同的对:

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)

请参见demo