wprowadzenie
w tym artykule nauczymy się używać funkcji aggregate Max w naszych poleceniach SQL Postgres z wielu perspektyw, aby uzyskać głębszy poziom zrozumienia. Tutaj omówimy:
- co? Z perspektywy początkującego, co robi funkcja MAX?
- dlaczego? W jakich sytuacjach powinniśmy używać funkcji Max ()?
- jak? Jak korzystać z tej funkcji w naszym SQL?
- więcej wykorzystamy również grupę przez construct.
wymagania wstępne
- poziom początkujący zrozumienie pisania SQL dla PostgreSQL (lub Oracle, MySQL, MS SQL Server itp.) za pomocą narzędzia PG Admin tool lub innego narzędzia administracyjnego db, lub za pomocą kodu lub języków skryptowych / kodujących, takich jak PHP, Python, Javascript, Java, C#, ASP.Net, VB.Net, Ruby, Node.js itp.), które zapewniają połączenie z bazą danych, a także metodę wysyłania zapytań SQL bazy danych, aby uzyskać dane lub dokonać zmian w bazie danych.
- zrozumienie użycia niektórych podstawowych instrukcji SQL (PL / SQL), takich jak
SELECT
,FROM
iGROUP BY
. - Wiedza o tym, czym jest ciąg i funkcja.
co to jest funkcja MAX() i jak działa?
funkcja Postgres MAX()
zwraca najwyższą (maksymalną) wartość ze zbioru liczb.
1
|
i_highest_of_set: = MAX (set_of_numbers);
|
dlaczego i kiedy używamy funkcji MAX ()?
za każdym razem, gdy masz zestaw liczb, w którym chcesz wiedzieć, który z tych zestawów jest najwyższy w zbiorze.
zacznijmy od prostego przykładu
zaczniemy od łatwego do zrozumienia przykładu. Nasz początkowy zbiór danych to tabela o nazwie coding_languages.
id_tech | t_name | i_rapid_dev |
---|---|---|
0 | Python | 7 |
1 | Java | 5 |
2 | PHP | 9 |
3 | Javascript | 8 |
w naszej firmie programistycznej powyższa tabela o nazwie coding_languages
ma trzy pola, w tym:
-
id_tech
jest naszym unikalnym identyfikatorem. -
t_name
to nazwa języka kodującego. -
i_rapid_dev
to całkowita ocena tego, jak szybko średni koder może rozwijać się za pomocą języka.
celem jest sprawdzenie, który język ma najwyższą ocenę pod względem szybkiego rozwoju (i_rapid_dev
). Napiszmy nasz skrypt SQL, aby użyć funkcji MAX
, aby pobrać t_name
, która ma najwyższą wartość w kolumnie i_rapid_dev
w naszym zestawie rekordów bazy danych PostgreSQL:
1
2 3 4 5 6 7 8 |
SELECT
id_tech , t_name , MAX(I_RAPID_DEV) FROM coding_languages GROUP BY I_RAPID_DEV; |
uwaga dla powyższego przykładu SQL: tutaj wykorzystujemy naszą wiedzę o grupach SQL. Możesz myśleć o tym w ten sposób: jeśli chcesz znaleźć maksymalnie więcej niż jedną liczbę, musisz wziąć pod uwagę zbiór liczb.
jak działa powyższa instrukcja SQL? Zrobimy to krok po kroku:
- (1)
SELECT
: mówimy silnikowi SQL PostgreSQL, że chcemy maksymalnie wszystkich wartości (ponieważ nie ma klauzuli WHERE lub HAVING) w kolumniei_rapid_dev
. - (2)
FROM
: określenie tabelicoding_languages
, z której będziemy pobierać nasze dane. - (3)
GROUP BY
: mówiąc Postgresowi, że chcemy pogrupować dane. Funkcja MAX (), będąca funkcją agregującą, wymaga grupowania naszych danych.
powyższe zapytanie zwraca: / id_tech / t_name / i_rapid_dev||:—:|—|————:| |2 / PHP / 9 /
teraz wiemy, że PHP jest najszybszy pod względem szybkiego rozwoju.
kolejny przykład użycia funkcji ” Max ” SQL w PostgreSQL
mini projekt: mieliśmy pracowników oceniających technologie stosowane w naszej firmie i chcących poznać najwyższej klasy technologię. Tutaj zbadamy inne stosunkowo proste użycie MAX()
podczas wprowadzania słowa kluczowego „posiadanie”. Oto nasz” surowy „zbiór danych z nazwą tabeli „technologie”:
id_tech | t_name_user | t_name_tech | t_category_tech | i_grade |
---|---|---|---|---|
0 | Ted | Java | Lang | 4 |
1 | Bif | Mongo | NoSQL | 16 |
2 | Susan | MySQL | RDB | 8 |
3 | Tim | PostgreSQL | RDB | 16 |
4 | Gary | Python | Lang | 20 |
5 | Sammy | PHP | Lang | 12 |
zaplanujmy, jak postępować. Chcemy zbudować zapytanie, które zrobi więcej niż jedną rzecz, w tym:
- (1) rozważmy tylko wiersze w naszym zbiorze danych, gdzie wartość pola (kolumny) _t_categorytech jest równa „Lang”. Tutaj przydaje się klauzula HAVING. Daje 3 rzędy. Widzisz dlaczego? Wskazówka: poszukaj w powyższej tabeli wartości „Lang”. Zauważ, że są trzy? W której kolumnie są?
- (2) Zwraca wartość w polu _t_nametech dla tych 3 wierszy, ponieważ chcemy wiedzieć, które technologie są zgodne z klasami.
- (3) nie obchodzi nas, kto dokonał oceny, więc nie ma wzmianki o kolumnie _t_nameuser.
- (4) Uzyskaj maksymalną sumę wartości tych 3 wierszy za pomocą kolumny _igrade.
- (5) Użyj GROUP BY do grupowania odpowiednich kolumn.
Analiza powyższego SQL:
- (1)
SELECT
: filtrujemy naszą tabelę Postgres do: (a) Pokaż kolumnęt_name_tech
, (b) Oblicz sumę klas (Sum(i_grade)
) dla każdej danej technologii i (c) Pokaż maksimum tych sum (Max(i_sum_of_grades)
) i nazwij wynik jakoi_highest_grade
. - (2)
FROM
: podanie tabelicoding_languages
jako źródła naszych danych. - (3)
GROUP BY
: Powiadamianie Postgresqla, że grupujemy. FunkcjaMAX
wymaga od nas grupowania danych, które Postgres wewnętrznie podsumowuje i odnajduje najwyższe z nich. - (4)
HAVING
: tutaj poinstruujemy PostgreSQL, aby filtrował wiersze, które mają „Lang” w polut_category_tech
.
powyższe zapytanie zwraca:
t_name_tech | t_category_tech | i_grade |
---|---|---|
PHP | Lang | 12 |
uwagi
- dlaczego nazwaliśmy niektóre z naszych zmiennych i kolumn tabeli przedrostkiem „i” lub „t”? Używamy „i”do liczby całkowitej, A” t ” do tekstu lub ciągu znaków.
- zapraszamy do zapoznania się z naszymi innymi artykułami, które wykorzystują potężną klauzulę
GROUP BY
Postgres.
podsumowanie
tutaj dowiedzieliśmy się, kiedy i jak najlepiej jest użyć funkcji MAX()
w PostgreSQL, aby znaleźć najwyższą wartość w zbiorze liczb. Wykorzystaliśmy zarówno przykłady na poziomie początkującym, jak i trudniejszym, skalując poziom trudności, aby proces uczenia się był jak najprostszy, ponieważ SQL może czasami być trudny do ogarnięcia, zwłaszcza gdy używasz klauzul GROUP BY
i HAVING
do pracy z podzbiorami danych.