Funkcja okna PostgreSQL NTILE

Funkcja okna PostgreSQL NTILE
Metody okienne w PostgreSQL zostały odrzucone w celu zrównania danych rozbieżnych i są niezbędne dla analitycznych i innych przypadków użycia postgresql. Metoda ntile (), a następnie klauzula Over w PostgreSQL, jest odrzucana w celu podzielenia zorganizowanych wierszy w nieco jak seria stopniowych wiader. Buły nie są niczym więcej niż zestawem grup rankingowych. W tym artykule odkryjesz, jak podzielić sortowane wiersze w partycji na daną liczbę rankingowych wiader za pomocą funkcji PostgreSQL ntile (). Metoda ntile () przydziela numer łyżki do każdej grupy, która rozpoczyna się od 1 w zestawie, pokazując zestaw, do którego ma miejsce.

Składnia:

>> ntile (wiadra) nad ([partycja wyrażenie partycji,…] [ORDET według wyrażenia sort]) [ASC | Desc],…]);

Przede wszystkim, aby zrozumieć metodę NTILE, zaloguj się z powłoki PostgreSQL. Dlatego spróbuj uruchomić powłokę wiersza polecenia PostgreSQL z aplikacji. Aby pracować na innym serwerze, wprowadź nazwę serwera; W przeciwnym razie hit Enter. Jeśli chcesz ćwiczyć w wcześniej wyznaczonej bazie danych, e.G., Postgres, a następnie naciśnij Enter lub inaczej, wpisz tytuł danych, E.G. 'test'. Aby użyć portu innego niż 5432, wprowadzić go; Jeśli nie, zostaw to tak, jak jest i naciśnij Enter, aby kontynuować. Może poprosić o wprowadzenie nazwy użytkownika na wypadek, gdybyś musiał przejść do nowej nazwy 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ć za pomocą wiersza polecenia, używając tego konkretnego użytkownika jako pod spodem. Następnie, skuteczne wpisy wszystkich obowiązkowych danych, możesz rozpocząć pracę nad NTILE.

Aby rozpocząć pracę nad NTILE, musisz utworzyć nową tabelę za pomocą polecenia Utwórz, jeśli go nie masz. Zastanów się nad podłączoną tabelą „Pracownik” w swojej bazie danych PostgreSQL o nazwie „Test”. Ta tabela zawiera cztery kolumny e.G., Id, nazwa, wiek i pensja pracownika konkretnej firmy. Każda kolumna ma łącznie 10 wierszy, co oznacza 10 rekordów w każdym polu kolumny.

>> Wybierz * od pracownika;

Na początku musimy zrozumieć prostą koncepcję pobierania rekordów z tabeli za pomocą klauzuli kolejności. Wykonaliśmy poniższe polecenie Wybierz bez użycia NTILE do opracowania i krótkiego zrozumienia koncepcji. Pobieramy rekordy dla kolumn; Nazwa, wiek i pensja podczas sortowania rekordów w kolejności rosnącej pola „Wiek”. Widać, że wyświetli się po prostu rekordy przedstawione na obrazie.

>> Wybierz nazwę, wiek, wynagrodzenie od zamówienia pracownika według wieku;

Użycie ntile () z kolejnością według klauzuli:

Zakładając tę ​​samą tabelę „Pracownik”, zacznijmy używać ntile () nad klauzulą ​​w naszym przykładzie. W tym przykładzie wybieramy dwie kolumny; Nazwa i wynagrodzenie, jednocześnie sortowanie wyniku związanego z kolejnością rosnącą kolumny „wynagrodzenie”. Wynik będzie zawierał dane, w których wiek pracownika jest większy niż 24 lata. Zdefiniowaliśmy wartość wiadra NTILE jako „3”, ponieważ chcemy podzielić wiersze na 3 wiadra, e.G., 1 do 3. Widać, że wiersze zostały pomyślnie podzielone na 3 równe wiadra, zawierające 3 rzędy w każdym wiadrze.

>> Wybierz nazwę, wynagrodzenie, ntile (3) nad (zamówienie według wynagrodzenia) od pracownik, gdzie wiek> „24”;

Teraz weźmy kolejny przykład podczas korzystania z tego samego tabeli „pracownik”. Tym razem chcemy pobrać rekordy trzech kolumn; Nazwa, wiek i wynagrodzenie za pomocą zapytania w skorupce poleceń. Istnieją niewielkie zmiany w klauzuli Where. Obecnie szukaliśmy zapisów tabeli „pracownik”, w których wiek jest mniejszy niż 27 lat. Z drugiej strony nie ma żadnej zmiany wartości kubełkowej, ponieważ jest to znowu 3. Próbując podane polecenie, znaleźliśmy tylko trzy rekordy, równo podzielone na 3 wiadra, jak wyświetlono na zdjęciu.

>> Wybierz nazwę, wiek, wynagrodzenie, ntile (3) nad (zamówienie według wynagrodzenia) od pracownika, w którym wiek < '27';

Użycie ntile () z porządkiem i partycją według klauzuli:

Miejmy przykład NTILE (), jednocześnie używając partycji i porządku przez klauzule. Załóżmy, że zostanie użyta niezmieniona tabela „pracownik” z bazy danych „Test”. W tym przykładzie musisz wybrać trzy kolumny; Imię, wiek i pensja, podczas sortowania w rosnący sposób „wiek” pola. Poza tym używamy partycji według klauzuli na kolumnie „Wynagrodzenie”, aby wykonać partycje tabeli zgodnie z tą kolumną. W tym konkretnym zapytaniu nie ma żadnych konkretnych warunków, co oznacza, że ​​wszystkie zapisy „pracownika” zostaną wyświetlone. Bucket NTILE ma wartość „3”. Po wykonaniu poniżej wyświetlonego zapytania zobaczysz poniższy wynik. Partycje są wykonywane zgodnie z wyraźnymi wartościami kolumny „pensji”. Wszystkie wartości kolumny „wynagrodzenie” są odrębne, dlatego leży w różnych partycjach, z wyjątkiem wartości „60000”. Oznacza to, że każda partycja ma 1 wartość oprócz jednej. Następnie wszystkie rzędy partycji zostały uszeregowane przez wiadra. Tylko jedno wiadro ma drugą rangę.

>> Wybierz nazwę, wiek, wynagrodzenie, ntile (3) Over (partycja według wynagrodzenia, zamówienie według wieku) od pracownika;

Biorąc ten sam przykład NTILE () z użyciem partycji przez klauzulę z klauzulą ​​według klauzuli. W klauzuli Where zdefiniowaliśmy warunek, który mówi, że jedyne zapisy, które zostaną pobrane, to miejsce, w którym wiek pracownika wynosi mniej niż 27 lat. Dostaliśmy tylko 3 wyniki o 2 partycjach w zależności od wieku i kolumny „ntile” z szeregami.

>> Wybierz nazwę, wiek, wynagrodzenie, ntile (3) Over (partycja według wynagrodzenia, zamówienie według wieku) od pracownika, w którym wiek < '27';

Wniosek:

W tym przewodniku omówiliśmy różne przykłady funkcji NTILE. Możesz je zaimplementować zgodnie z koniecznością.