一个表格存储了城市之间的距离。每个城市对由不同的人以不同的方法进行多次测量。结果是这样的:
(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。 这些值不正确,而且当添加多个城市时,此代码也会失败。
帮助?
答案 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