2017-06-28 92 views
5

Problem zrozumienia PodzapytanieZrozumienie podsumowanie zapytania wewnętrznej

Nie rozumiem tego przykładu z www.sqlitetutorial.net/sqlite-subquery: enter image description here

tylko jeden numer jest zwracany przez zapytanie wewnętrznej: 1422138358

enter image description here

Ale przeciętny tej liczby jest inna:

enter image description here

Więc dlaczego jest średnią 1422138358 1422138358 nie? Te dwa zapytania nie są niezależne? Jeśli usunąć "ORDER BY ALBUMID" rezultat jest taki sam:

enter image description here

Przykład dane:
http://www.sqlitetutorial.net/sqlite-sample-database/

Edit: Ok, nie ma chyba jakiś całkowitą przepełnienie dzieje w kolumnach są liczbami całkowitymi, ale nadal nie rozumiem, dlaczego przykład bierze średnią z jednej liczby? enter image description here

Odpowiedz

1

Bardzo możliwe, że to była pomyłka

1) Z tekstu widać, że chcieli „suma wielkości albumu” i you `re odpytuje Tracks tabelę, która rzekomo mieć kolumnę album_ID

2) nie można używać ORDER BY jeśli ty jesteś tylko przy użyciu kolumny agregacji takich jak

select SUM(bytes) 
from Tracks 
Order by albumID 

, ponieważ nie ma nic, aby zamówić go z.

Należy również pamiętać, że nie możeużycieuporządkuj w podzapytaniami

Wreszcie czego brakuje tutaj zostało to pozostałe zapytania:

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

) as album 

można dowiedzieć się więcej o podzapytaniami here

A jeśli chcesz się z nimi bawić, oto kod th co można replikować i użyć go do dalszych exercies na tej stronie:

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 

nadzieję, że pomoże