了解内部查询的摘要

Ras*_*sen 5 sql sqlite

理解子查询的问题

我不明白这个例子来自www.sqlitetutorial.net/sqlite-subquery: 在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

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

编辑:好的,可能有一些整数溢出正在进行,因为列是整数,但我仍然不明白为什么该示例采用单个数字的平均值? 在此输入图像描述

S4V*_*V1N 1

很可能这是一个错误

1)从文本中您可以看到他们想要“对专辑的大小求和”并且您正在查询 Tracks 表,该表应该有一个 album_ID 列

2) 如果您仅使用聚合列,则不能使用 ORDER BY,例如

select SUM(bytes)
from Tracks
Order by albumID
Run Code Online (Sandbox Code Playgroud)

因为它没有任何可以用来排序的依据。

另请注意,您不能在子查询中 使用 order by

最后,这里缺少的是查询的剩余部分:

Select AVG(album.size) as [avg(album.size)]
from (
select albumID,SUM(bytes) as size
from Tracks
GROUP BY albumID

) as album
Run Code Online (Sandbox Code Playgroud)

您可以在此处了解有关子查询的更多信息

如果您想尝试这些,您可以复制以下代码并使用它在该网站上进行进一步练习:

    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
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你