2016-10-22 22 views
1

我在SQL語句中得到了關於子查詢的問題。我試圖做的是從另一個查詢返回的平均列結果中查找最短時間。從第二個查詢返回的AVG()中獲取MIN()的SQL語句

SELECT userID 
FROM myTable 
WHERE time = MIN(...) 

SELECT userID, AVG(date_time) 
FROM myTable 
GROUP BY userID 

第二個查詢將返回兩次之間的平均值和由第三方分組。

然後我的第一個查詢需要從我的第二個查詢中找到最小平均時間返回。我怎樣才能將兩個查詢結合在一起?

我的第二個查詢的樣本數據是這樣的:

user1 20 
user2 45 
user3 10 

然後我的第一個查詢,我需要與最低平均得到用戶:

user3 10 

在此先感謝。

+0

樣本數據和期望的結果將真正闡明你想要做什麼。 –

+0

因爲您說您正在使用SQL Server,所以我刪除了MySQL標籤。 –

回答

2

如果你想一排與最低平均時間,那麼你可以做:

SELECT TOP 1 userID 
FROM myTable 
GROUP BY userID 
ORDER BY AVG(date_time) ASC; 

如果你想多行,然後使用TOP WITH TIES

SELECT TOP (1) WITH TIES userID 
FROM myTable 
GROUP BY userID 
ORDER BY AVG(date_time) ASC; 
+0

我正在使用MSSQL,並且它在限制處向我發送了錯誤消息 – hyperfkcb

+0

好吧我想通過使用TOP 1.順便說一下,您的意思是多行?因爲我認爲MIN會選擇最小的一個? – hyperfkcb

+0

@ 2dollar20cents。 。 。這個問題最初被標記爲「mysql」。我修復了SQL Server的答案。 –

1

嘗試此查詢:

SELECT TOP 1 userID 
FROM myTable 
GROUP BY userID 
ORDER BY AVG(date_time) ASC