理解子查询的问题
我不明白这个例子来自www.sqlitetutorial.net/sqlite-subquery:

内部查询只返回一个数字:1422138358
但这个数字的平均值是不同的:
那么为什么平均1422138358不是1422138358?这两个查询不是独立的?如果我删除"ORDER BY albumid",结果是一样的:
很可能这是一个错误
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)
希望能帮助到你
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |