我有一個名為的表BUS_DATA
,它在運行以下查詢時回傳以下行
query select * from BUS_DATA
然后我運行下面的查詢以獲取僅具有 id 的總線的資訊4-3323309834
select * from BUS_DATA where busId = '4-3323309834'
以下是我運行上述查詢時得到的行
我想要實作的是只回傳具有最大值的行,currentSpeed
如下dataDateTime
所示,這樣我就不會得到兩個在特定日期有兩個記錄的行。
我已經嘗試過以下查詢,但它仍然為每個日期回傳兩條記錄
select busId, dataDateTime, max(currentSpeed) as CURRENTSPEED from `BUS_DATA` WHERE busId = '4-3323309834' group by busId, dataDateTime
我還希望查詢回傳其他列passengersNo
,例如speedLimit
上述查詢未回傳的列
uj5u.com熱心網友回復:
您可能可以使用磁區來實作此目的。按 BusID 和日期分組,但您的日期是日期時間,因此您可能只想轉換或轉換為日期,以便將第 27 個所有組放在一起,等等...然后您可以通過 desc 將當前速度排序最快的在頂部。
SELECT
X.*
FROM
(
SELECT
BusID
, BusName
, CurrentSpeed
, PassengersNo
, SpeedLimit
, dataDateTime
, ROW_NUMBER() OVER (PARTITION BY CAST(dataDateTime AS DATE), BusId ORDER BY CurrentSpeed DESC) AS RowNumOrder
FROM BUS_DATA
WHERE busId = '4-3323309834'
) AS X
WHERE X.RowNumOrder = 1
uj5u.com熱心網友回復:
我相信這將適用于 Oracle。As 不適用于 Oracle 中子選擇和連接的別名。
SELECT
X.*
FROM
(
SELECT
BusID
, BusName
, CurrentSpeed
, PassengersNo
, SpeedLimit
, dataDateTime
, ROW_NUMBER() OVER (PARTITION BY CAST(dataDateTime AS DATE), BusId ORDER BY CurrentSpeed DESC) RowNumOrder
FROM BUS_DATA
WHERE busId = '4-3323309834'
) X
WHERE X.RowNumOrder = 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/504047.html
下一篇:更新房間資料庫