SQL 从第二个查询返回的 AVG() 中获取 MIN() 的语句
SQL statement to get the MIN() from the AVG() returned from second query
我有一个关于 SQL 语句中的子查询的问题。我想做的是从另一个查询中找到平均列结果 return 的最短时间。
SELECT userID
FROM myTable
WHERE time = MIN(...)
SELECT userID, AVG(date_time)
FROM myTable
GROUP BY userID
第二个查询会return我取两次之间的平均值并由第三方分组。
然后我的第一个查询需要从我的第二个查询中找到最小平均时间 return。如何将这两个查询组合在一起?
我的第二个查询的示例数据如下:
user1 20
user2 45
user3 10
然后对于我的第一个查询,我需要获得具有最小平均值的用户:
user3 10
提前致谢。
如果你想要平均时间最少的一行,那么你可以这样做:
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;
试试这个查询:
SELECT TOP 1 userID
FROM myTable
GROUP BY userID
ORDER BY AVG(date_time) ASC
我有一个关于 SQL 语句中的子查询的问题。我想做的是从另一个查询中找到平均列结果 return 的最短时间。
SELECT userID
FROM myTable
WHERE time = MIN(...)
SELECT userID, AVG(date_time)
FROM myTable
GROUP BY userID
第二个查询会return我取两次之间的平均值并由第三方分组。
然后我的第一个查询需要从我的第二个查询中找到最小平均时间 return。如何将这两个查询组合在一起?
我的第二个查询的示例数据如下:
user1 20
user2 45
user3 10
然后对于我的第一个查询,我需要获得具有最小平均值的用户:
user3 10
提前致谢。
如果你想要平均时间最少的一行,那么你可以这样做:
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;
试试这个查询:
SELECT TOP 1 userID
FROM myTable
GROUP BY userID
ORDER BY AVG(date_time) ASC