我在sql中有以下表格。爲了便於閱讀,我只在這裏輸入了少量的表格數據,並排除了與此問題無關的列。在SQL Server 2012中,Sum並不是我的總和
表旅行(包括time_out_only和time_in_only因爲這些被用於計算列time_in_flight):
trip_no (PK, int not null)
time_out_only (time(0) null)
time_in_only (time(0) null)
time_in_flight (computed, time(3) null)
表Passengers_in_trip:
trip_no (PK, FK, int not null)
id_psg (PK, FK, int not null)
表乘客:
id_psg (PK, int not null)
name (char(20) not null)
的信息對兩名乘客如下;
表 - 旅行(只包括行程沒有和time_in_flight)
Trip No time_in_flight
1100 200
1181 109
1187 117
1188 118
表 - Passengers_in_trip:
Trip No IS_Psg
1100 1
1181 1
1187 8
1188 8
表 - 乘客:
問題/查詢: 查找乘坐飛行時間最多的乘客。
我曾嘗試以下語法
SELECT SUM(Trip.time_in_flight) AS total_flying_time, Passenger.name
FROM Trip
JOIN Pass_in_trip
ON Trip.time_no = Pass_in_trip.trip_no
JOIN Passenger
ON Pass_in_trip.ID_Psg = Passenger.ID_Psg
GROUP BY Trip.time_in_flight, Passenger.name;
結果應該是309約瑟夫·史密斯(ID_Psg 1)和235伊萊恩·麥考伊(ID_Psg 8)
但是我的語法不歸納爲我。我的結果顯示如下;
Name total_flying_time
Joseph Smith 200
Joseph Smith 109
Elaine McCoy 117
Elaine McCoy 118
我已經嘗試了上面的語法的變化,但沒有什麼是總結乘客,給我的乘客總飛行時間,這樣我就可以通過最高飛行時間命令他們,甚至選擇前5名。
我不確定是否因爲time_in_flight是一個計算列,它會影響總和。但是,SQL確實允許我們對計算列進行求和。
我想我的加入是正確的,以獲得乘客姓名的結果。所以我不確定我在這個查詢中出錯的地方。
誰能幫助?我已經搜索了答案並嘗試了不同的語法,但沒有任何工作和它變得令人沮喪。
感謝所有幫助。
感謝何超儀
好吧,你被'time_in_flight',這沒有任何意義真的分組。從「GROUP BY」中刪除它,它會給你你想要的結果 – Lamak