了解内部查询的摘要

时间:2017-06-28 16:10:09

标签: sql sqlite

了解子查询的问题

我不明白这个例子来自www.sqlitetutorial.net/sqlite-subquery: enter image description here

内部查询只返回一个数字:1422138358

enter image description here

但这个数字的平均值是不同的:

enter image description here

那么为什么平均1422138358不是1422138358?这两个查询不是独立的?如果我删除“ORDER BY albumid”,结果是相同的:

enter image description here

示例数据:
http://www.sqlitetutorial.net/sqlite-sample-database/

编辑:好的,可能会有一些整数溢出,因为列是整数,但我仍然不明白为什么这个例子取一个数字的平均值? enter image description here

1 个答案:

答案 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

希望有所帮助