Składnia:
>> NTILE(zasobniki) OVER ( [PARTITION BY wyrażenie partycji,… ] [ORDET BY wyrażenie sortowania] ) [ASC | DESC],…]);Przede wszystkim, aby zrozumieć metodę NTILE, zaloguj się z powłoki PostgreSQL. Dlatego spróbuj uruchomić powłokę wiersza poleceń PostgreSQL z poziomu aplikacji. Aby pracować na innym serwerze, wprowadź nazwę serwera; w przeciwnym razie naciśnij Enter. Jeśli potrzebujesz ćwiczyć na wcześniej wyznaczonej bazie danych, e.sol., Postgres, a następnie naciśnij Enter lub wpisz tytuł bazy danych, e.sol. 'test'. Aby użyć portu innego niż 5432, wypisz go; jeśli nie, zostaw to tak, jak jest i naciśnij Enter, aby kontynuować. Może poprosić Cię o podanie nazwy użytkownika na wypadek, gdybyś musiał zmienić nazwę użytkownika. Wprowadź nazwę użytkownika; w przeciwnym razie po prostu naciśnij Enter. Na koniec musisz umieścić swoje obecne hasło użytkownika, aby przełączyć się za pomocą wiersza poleceń, korzystając z tego konkretnego użytkownika, jak poniżej. Następnie skuteczne wpisy wszystkich obowiązkowych danych, możesz rozpocząć pracę na NTILE.
Aby rozpocząć pracę nad NTILE, musisz utworzyć nową tabelę za pomocą polecenia CREATE, jeśli jej nie masz. Przemyśl wyświetlaną poniżej tabelę „pracownik” w bazie danych PostgreSQL o nazwie „test”. Ta tabela zawiera cztery kolumny e.sol., identyfikator, imię i nazwisko, wiek i wynagrodzenie pracownika danej firmy. Każda kolumna ma łącznie 10 wierszy, co oznacza 10 rekordów w każdym polu kolumny column.
>> WYBIERZ * OD pracownika;
Na początek musimy zrozumieć prostą koncepcję pobierania rekordów z tabeli za pomocą klauzuli ORDER BY. Wykonywaliśmy poniższe polecenie SELECT bez użycia NTILE do opracowania i krótkiego zrozumienia koncepcji. Pobieramy rekordy dla kolumn; imię i nazwisko, wiek i wynagrodzenie podczas sortowania rekordów w porządku rosnącym pola „wiek”. Widać, że wyświetli tylko rekordy przedstawione na obrazku.
>> WYBIERZ imię, wiek, wynagrodzenie OD pracownika ORDER BY wiek;
Użycie NTILE() OVER z klauzulą ORDER BY:
Zakładając, że ta sama tabela „pracownik”, zacznijmy używać klauzuli NTILE() OVER w naszym przykładzie. W tym przykładzie wybraliśmy dwie kolumny; nazwisko i wynagrodzenie, przy sortowaniu wyniku w porządku rosnącym kolumny „wynagrodzenie”. Wynik będzie zawierał dane, w których wiek pracownika jest większy niż 24 lata. Zdefiniowaliśmy wartość kubełka NTILE jako „3”, ponieważ chcemy podzielić wiersze na 3 kubełki, e.sol., 1 do 3. Widać, że wiersze zostały pomyślnie podzielone na 3 równe zasobniki, zawierające po 3 wiersze w każdym zasobniku.
>> SELECT imię, pensja, NTILE(3) OVER( ORDER BY pensja ) FROMpracownik WHERE wiek > '24';
Weźmy teraz inny przykład używając tej samej tabeli „pracownik”. Tym razem chcemy pobrać rekordy trzech kolumn; imię i nazwisko, wiek i wynagrodzenie za pomocą zapytania SELECT w powłoce poleceń. W klauzuli WHERE są drobne zmiany. Obecnie szukamy ewidencji tabeli „pracownik”, w której wiek jest poniżej 27 lat, do której trafią tylko rekordy w wieku poniżej 27 lat. Z drugiej strony nie ma zmiany w wartości kubełkowej, ponieważ ponownie wynosi 3. Próbując podanego polecenia, znaleźliśmy tylko trzy rekordy, równo podzielone na 3 wiadra, jak pokazano na zdjęciu.
>> WYBIERZ imię i nazwisko, wiek, wynagrodzenie, NTILE(3) POWYŻEJ ( ORDER WEDŁUG wynagrodzenia ) OD pracownika WHERE wiek < '27';
Użycie NTILE() OVER z klauzulą ORDER BY i PARTITION BY:
Przyjrzyjmy się przykładowi NTILE() OVER podczas jednoczesnego używania klauzul PARTITION BY i ORDER BY. Załóżmy, że zostanie użyta niezmieniona tabela „pracownik” z bazy danych „test”. W tym przykładzie musisz wybrać trzy kolumny; imię i nazwisko, wiek i wynagrodzenie, sortując rosnąco po polu „wiek”. Poza tym używaliśmy klauzuli PARTITION BY na kolumnie „wynagrodzenie”, aby podzielić tabelę według tej kolumny. Nie ma określonego warunku, który został użyty w tym konkretnym zapytaniu, co oznacza, że zostaną wyświetlone wszystkie rekordy tabeli „pracownik”. Wiadro NTILE ma wartość „3”. Po wykonaniu poniższego zapytania zobaczysz poniższy wynik. Podziały dokonywane są według odrębnych wartości kolumny „wynagrodzenie”. Wszystkie wartości kolumny „wynagrodzenie” są różne, dlatego leży w różnych przegrodach poza wartością „60000”. Oznacza to, że każda partycja ma 1 wartość z wyjątkiem jednej. Następnie wszystkie rzędy partycji zostały uszeregowane w kubełkach. Tylko jedno wiadro dostało 2 miejsce.
>> WYBIERZ imię, wiek, wynagrodzenie, NTILE(3) PONAD( PODZIAŁ WEDŁUG wynagrodzenia, ZAMÓW WEDŁUG wieku ) OD pracownika;
Na tym samym przykładzie NTILE() OVER z wykorzystaniem klauzuli PARTITION BY i ORDER BY z klauzulą WHERE. W klauzuli WHERE zdefiniowaliśmy warunek, który mówi, że pobierane będą jedynie rekordy, w których pracownik ma mniej niż 27 lat. Otrzymaliśmy tylko 3 wyniki z 2 podziałami według wieku i kolumną „ntile” z rangami.
>> WYBIERZ imię, wiek, pensję, NTILE(3) OVER( PARTITION BY pensje, ORDER BY wiek ) FROM pracownik WHERE wiek < '27';
Wniosek:
W tym przewodniku omówiliśmy różne przykłady funkcji ntile. Możesz je wdrożyć zgodnie z potrzebami.