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