了解子查询的问题
我不明白这个例子来自www.sqlitetutorial.net/sqlite-subquery:
内部查询只返回一个数字:1422138358
但这个数字的平均值是不同的:
那么为什么平均1422138358不是1422138358?这两个查询不是独立的?如果我删除“ORDER BY albumid”,结果是相同的:
答案 0 :(得分:1)
很可能是一个错误
1) 从文本中你可以看到他们想要“总结相册的大小”并且你要查询Tracks表,据说这个表有一个album_ID列
2) 如果仅使用聚合列,则无法使用ORDER BY 比如
select SUM(bytes)
from Tracks
Order by albumID
因为没有任何东西可以从中订购。
另请注意,不能 在子查询中使用 排序
最后,这里缺少的是剩下的查询:
Select AVG(album.size) as [avg(album.size)]
from (
select albumID,SUM(bytes) as size
from Tracks
GROUP BY albumID
) as album
您可以详细了解子查询here
如果你想玩这些,那就是你可以复制的代码并将其用于该网站上的进一步练习:
CREATE TABLE tracks (AlbumID int,bytes int)
CREATE TABLE albums (AlbumID int, title nvarchar(50))
insert into Tracks values (1,2),(2,10),(3,15)
Select AVG(album.size) as [avg(album.size)]
from (
select AlbumID,SUM(bytes) as size
from tracks
GROUP BY albumID
) as album
希望有所帮助