Podsumowanie: w tym samouczku dowiesz się, jak używać funkcji SQLite NTILE()
do dzielenia zestawu wyników na liczbę bucketów i przypisywania numeru Bucketa do każdego wiersza.
Wprowadzenie do funkcji SQLite NTILE ()
SQLite NTILE()
funkcja jest funkcją okna, która dzieli uporządkowany zestaw wyników na liczbę bucketów przez określone wyrażenie i przypisuje odpowiednią liczbę bucketów do każdego wiersza.
Poniżej przedstawiono składnię funkcji NTILE()
:
w tej składni:
wyrażenie
expression
może być literalną dodatnią liczbą całkowitą lub dowolnym prawidłowym wyrażeniem, które przekształca się w dodatnią liczbę całkowitą.
funkcja NTILE()
przypisuje numery od 1 do wartości expression
do każdego wiersza. Liczba wierszy w wiadrach może różnić się co najwyżej o 1. Pozostała część liczby wierszy podzielonych przez wiadra jest przydzielana do każdego wiadra, począwszy od wiadra 1.
na przykład, jeśli masz 10 wierszy i 4 wiadra. Każde wiadro będzie miało 2 rzędy. Reszta z 10/4 to 2. Tak więc pierwsze wiadro będzie miało 2 + 1 = 3 rzędy, drugie wiadro będzie również miało 3 rzędy.
poniższy obrazek ilustruje ideę:
jeżeli wartość wyrażenia jest większa niż liczba wierszy, wtedy funkcja NTILE()
wypełni liczbę wiader równą liczbie wierszy. W związku z tym Pozostałe wiadra będą puste.
na przykład, jeśli masz 10 wierszy i 11 wiader, każdemu wierszowi zostanie przypisany numer wiadra od 1 do 10. Jedenaste wiadro nie będzie miało rzędu.
zauważ, że nie można używać podquery lub funkcji okna w expression
.
partycja przez
klauzula PARTITION BY
dzieli zbiory wyników na partycje, do których odnosi się funkcja NTILE
.
ORDER BY
klauzula ORDER BY
określa kolejność wierszy w każdej partycji, do której ma zastosowanie NTILE()
.
przykład funkcji SQLite NTILE ()
użyjemy tabeli utworów z przykładowej bazy danych, aby zademonstrować funkcję NTILE()
:
użycie funkcji SQLite NTILE () z kolejnością według przykładu
następująca instrukcja używa funkcji NTILE()
do podziału na 4 wiadra wartości w kolumnie Milliseconds
tabeli tracks
z albumu 1.
kolumna Milliseconds
ma 10 wartości w tym albumie, więc dwie dodatkowe wartości, które są pozostałością 10/4, są rozdzielane na wiadra 1 i 2, które w związku z tym mają większą wartość niż wiadra 3 lub 4.
oto wynik:
użycie funkcji SQLite NTILE() z klauzulą PARTITION by przykład
poniższe polecenie używa funkcji NTILE()
do dzielenia utworów z każdego albumu na 3 buckety według wartości w kolumnie Bytes
:
poniższy obrazek pokazuje wyjście:
w tym przykładzie klauzula PARTITION BY
rozdziela wiersze na partycje lub albumy. Klauzula ORDER BY
posortowała utwory w każdym albumie według ich wielkości w bajtach. Funkcja NTILE()
przypisała numer kubełka do każdego utworu i zresetowała numer kubełka dla każdego albumu.
w tym samouczku nauczyłeś się, jak używać funkcji SQLite NTILE()
do dzielenia zestawu wyników na liczbę bucketów i przypisywania numeru Bucketa do każdego wiersza.
- czy ten samouczek był pomocny ?
- YesNo