gpt4 book ai didi

sql - 比较两组 SQL "GROUP BY"结果

转载 作者:行者123 更新时间:2023-12-03 17:54:30 25 4
gpt4 key购买 nike

这是我的表:

ROUTES = the route ID
STATIONS = the station ID
STOPS? = if the train stops at this station then is equal to 1 otherwise 0

-------------------------
ROUTES STATIONS STOPS?
-------------------------
R1 S1 1
R1 S2 0
R1 S3 1
R1 S4 0
R1 S5 1
R2 S1 1
R2 S2 1
R2 S3 1
R2 S4 0
R2 S5 1
R3 S1 1
R3 S2 0
R3 S4 1
R3 S5 0
R3 S6 1
R3 S7 1
R4 S1 1
R4 S2 1
R4 S3 0
R4 S4 1
R5 S2 1
R5 S3 0
R5 S4 1

我想要做的是找到哪些路线经过相同的车站但没有相同的停靠点。

例如:
我们看到
Route R1 passes through stations S1->S2->S3->S4->S5 
Route R2 passes through stations S1->S2->S3->S4->S5

但它们有不同的停靠点,所以结果应该是:
R1 
R2

我想首先将所有路线分组,然后将属于该组的车站与所有其他车站进行比较,并检查它们是否至少有一个不同的停靠点。

最佳答案

以下查询将返回其中一列火车未停靠的路线和车站,http://sqlfiddle.com/#!3/f4c5f/8 .

  SELECT DISTINCT
tblRoutes.ROUTES
,tblRoutesCross.ROUTES CrossingRoute
,tblRoutes.STATIONS
FROM
tblRoutes
INNER JOIN
tblRoutes tblRoutesCross
ON
tblRoutesCross.STATIONS = tblRoutes.STATIONS
AND
tblRoutes.ROUTES < tblRoutesCross.ROUTES
AND
(
tblRoutesCross.STOPS = 0
OR
tblRoutes.STOPS = 0
)

以下查询将仅返回交叉路线:
 SELECT DISTINCT
tblRoutes.ROUTES
,tblRoutesCross.ROUTES CrossingRoute
--,tblRoutes.STATIONS
FROM
tblRoutes
INNER JOIN
tblRoutes tblRoutesCross
ON
tblRoutesCross.STATIONS = tblRoutes.STATIONS
AND
tblRoutes.ROUTES < tblRoutesCross.ROUTES
AND
(
tblRoutesCross.STOPS = 0
OR
tblRoutes.STOPS = 0
)

要查找非列车停止更改或到达和在 where 子句中的路线:
  SELECT DISTINCT
tblRoutes.ROUTES
,tblRoutesCross.ROUTES CrossingRoute
--,tblRoutes.STATIONS
FROM
tblRoutes
INNER JOIN
tblRoutes tblRoutesCross
ON
tblRoutesCross.STATIONS = tblRoutes.STATIONS
AND
tblRoutes.ROUTES < tblRoutesCross.ROUTES
AND
(
tblRoutesCross.STOPS = 0
AND
tblRoutes.STOPS = 0
)

关于sql - 比较两组 SQL "GROUP BY"结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13419701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com