从第二个查询返回的AVG()获取MIN()的SQL语句

时间:2016-10-22 12:38:36

标签: sql sql-server average 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

提前致谢。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

尝试此查询:

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