2017-06-28 17 views
5

ben www.sqlitetutorial.net/sqlite-subquery gelen bu örneği anlamıyorumanlama özeti

Sorun anlama alt sorgu: enter image description here

Sadece bir numara iç sorgu tarafından döndürülen: 1422138358

enter image description here

Ama bu sayının ortalama farklıdır:

enter image description here

Peki neden 1422138358 değil 1422138358 ortalamasıdır? İki sorgu bağımsız değil mi? Ben "ALBUMID TARAFINDAN SİPARİŞ" kaldırırsanız sonuç aynıdır:

enter image description here

Örnek veriler:
http://www.sqlitetutorial.net/sqlite-sample-database/

Düzenleme : Tamam, muhtemelen sütun olarak oluyor bazı tamsayı taşması var Tamsayı, ancak hala niçin örnek tek bir numara ortalaması almak anlamıyorum? Çok büyük olasılıkla, onlar istediğini Gördüğünüz metni 'toplamı bir albümde büyüklüğü' Gönderen bir hata

1) ve hangi sözde sorgulama Parçalar tablo `re o enter image description here

cevap

1

eğer `yalnızca toplama kolonu kullanılarak halinde iLE için örneğin

olarak
select SUM(bytes) 
from Tracks 
Order by albumID 
0 SİPARİŞ kullanamaz bir Album_ID kolonu

2) sahip

, sipariş vermesi gereken bir şey olmadığı için.

Ayrıca unutmayın size olamazkullanımı ilesipariş alt sorgular içinde Nihayet

burada ne eksikti bu sorgunun kalan edildi:

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

) as album 

Sen alt sorgular here hakkında daha fazla bilgi edinebilirsiniz

Ve bunlarla oynamak isterseniz, kodları th Eğer çoğaltmak ve bu web sitesi ile ilgili daha fazla alıştırmalarda için kullanabilirsiniz at:

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 

Umut o

yardımcı olur