PostgreSQL

Funkcja okna PostgreSQL NTILE

Funkcja okna PostgreSQL NTILE
Metody okien w PostgreSQL zostały odrzucone w celu zrównania rozbieżnych danych i są niezbędne w przypadku zastosowań analitycznych i innych PostgreSQL. Metoda NTILE(), po której następuje klauzula OVER w PostgreSQL, jest odrzucana, aby podzielić zorganizowane wiersze w podobne do serii stopniowanych wiader. Wiadra to nic więcej niż zestaw rankingowych grup. W tym artykule dowiesz się, jak podzielić posortowane wiersze w partycji na określoną liczbę rankingowych segmentów za pomocą funkcji PostgreSQL NTILE(). Metoda NTILE() przydziela numer segmentu każdej grupie rozpoczynającej się od 1 w zestawie, demonstrując zestaw, w którym wiersz ma swoje miejsce.

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.

Jak zmienić ustawienia myszy i touchpada za pomocą Xinput w systemie Linux?
Większość dystrybucji Linuksa jest domyślnie dostarczana z biblioteką „libinput” do obsługi zdarzeń wejściowych w systemie. Może przetwarzać zdarzenia...
Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...
Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...