introduktion
i den här artikeln lär vi oss att använda aggregate Max-funktionen i våra Postgres SQL-kommandon från flera perspektiv för att få en djupare förståelse. Här kommer vi att diskutera:
- vad? Ur ett nybörjarperspektiv, vad MAX-funktionen gör?
- varför? I vilka situationer ska vi använda Max () – funktionen?
- hur? Hur använder vi den här funktionen i vår SQL?
- mer vi kommer också att använda gruppen genom konstruktion.
förutsättningar
- Nybörjarnivå förståelse för att skriva SQL för PostgreSQL (eller Oracle, MySQL, MS SQL Server, etc.) med hjälp av PG Admin tool eller något annat db-administrationsverktyg, eller via kod eller skript/kodningsspråk som PHP, Python, Javascript, Java, C#, ASP.Net, VB.Net Ruby, Node.js, etc.) som ger en databasanslutning, samt en metod för att skicka databasen SQL-frågor, för att få data eller göra ändringar i din databas.
- förståelse för användningen av vissa grundläggande SQL (PL/SQL) uttalanden, som
SELECT
,FROM
ochGROUP BY
. - kunskap om vad en sträng och funktion är.
vad är MAX () – funktionen och hur fungerar den?
funktionen Postgres MAX()
returnerar det högsta (maximala) värdet från en uppsättning tal.
Syntax
1
|
i_highest_of_set: = MAX(set_of_numbers);
|
varför och när använder vi funktionen MAX ()?
varje gång du har en uppsättning siffror där du vill veta vilken av den uppsättningen som är högst i uppsättningen.
Låt oss börja med ett enkelt exempel
vi börjar med ett lättförståeligt exempel. Vår första dataset är en tabell som heter coding_languages.
id_tech | t_namn | i_rapid_dev |
---|---|---|
0 | Python | 7 |
1 | Java | 5 |
2 | PHP | 9 |
3 | Javascript | 8 |
på vårt mjukvaruutvecklingsföretag har ovanstående tabell som heter coding_languages
tre fält, inklusive:
-
id_tech
är vår unika identifierare. -
t_name
är namnet på kodningsspråket. -
i_rapid_dev
är ett heltal utvärdering av hur snabbt en genomsnittlig kodare kan utvecklas med hjälp av språket.
målet är att ta reda på vilket språk som har högsta betyg när det gäller snabb utveckling (i_rapid_dev
). Låt oss skriva vårt SQL-skript för att använda funktionen MAX
för att hämta t_name
som har det högsta värdet i kolumnen i_rapid_dev
i vår PostgreSQL-databaspostmängd:
1
2 3 4 5 6 7 8 |
välj
id_tech , t_name , MAX (i_rapid_dev) från coding_languages grupp av i_rapid_dev; |
Anmärkning för SQL-exemplet ovan: Det är här vi använder vår kunskap om SQL-grupper. Du kan tänka på det så här: om du vill hitta maximalt mer än ett nummer måste du överväga en uppsättning siffror.
hur fungerar SQL-satsen ovan? Vi tar det steg för steg:
- (1)
SELECT
: vi säger till PostgreSQL SQL-Motor att vi vill ha maximalt av alla värden (eftersom ingen var eller har klausul) i kolumneni_rapid_dev
. - (2)
FROM
: ange tabellencoding_languages
för att hämta våra data från. - (3)
GROUP BY
: berätta för Postgres att vi vill gruppera data. Funktionen MAX (), som är en aggregerad funktion, kräver gruppering av våra data.
ovanstående fråga returnerar| / id_tech / t_name / i_rapid_dev||:—:|—|————:| |2 / PHP / 9 /
vi vet nu att PHP är snabbast när det gäller snabb utveckling.
ett annat exempel på att använda ”Max” SQL-funktionen i PostgreSQL
mini-projektet: vi hade anställda Betygsätta de tekniker som används i vårt företag och vill veta den högsta graderade tekniken. Här kommer vi att utforska en annan relativt enkel användning av MAX()
medan vi introducerar nyckelordet ”med”. Här är vår ” raw ”dataset med tabellnamnet ”technologies”:
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 |
låt oss planera hur vi ska gå vidare. Vi vill bygga en fråga som kommer att göra mer än en sak, inklusive:
- (1) Tänk bara på raderna i vår dataset där _t_categorytech-fältet (kolumn) är lika med ”Lang”. Det är här HAVING-klausulen är till nytta. Det kommer att ge 3 rader. Kan du se varför? Tips: titta i tabellen ovan för” Lang ” – värdet. Lägg märke till att det finns tre? Vilken kolumn är de i?
- (2) returnerar värdet i fältet _t_nametech för de 3 raderna eftersom vi vill veta vilken teknik betygen går med.
- (3) Vi bryr oss inte vem som gjorde bedömningen, så inget omnämnande av kolumnen _t_nameuser.
- (4) få MAX summan av värdena för de 3 raderna med hjälp av _igrade-kolumnen.
- (5) använd grupp för att gruppera lämpliga kolumner.
analys av SQL ovan:
- (1)
SELECT
: vi filtrerar vårt Postgres-bord till: (a) visa kolumnent_name_tech
, (b) beräkna summan av betyg (Sum(i_grade)
) för varje given teknik, och (c) visa maximalt av dessa belopp (Max(i_sum_of_grades)
) och namnge resultatet somi_highest_grade
. - (2)
FROM
: ange tabellencoding_languages
som källa till våra data. - (3)
GROUP BY
: meddela PostgreSQL att vi grupperar. FunktionenMAX
kräver att vi grupperar de data som Postgres internt summerar och hittar den högsta av. - (4)
HAVING
: det är här vi instruerar PostgreSQL att filtrera i raderna som har ”Lang” i fältett_category_tech
.
frågan ovan returnerar:
t_name_tech | t_category_tech | i_grade |
---|---|---|
PHP | Lang | 12 |
anteckningar
- varför namngav vi några av våra variabler och tabellkolumner med prefixet ”i” eller ”t”? Vi använder ”i ”för att betyda heltal och” t ” för att betyda text eller sträng.
- vi inbjuder dig att leta efter våra andra artiklar som använder den kraftfulla
GROUP BY
Postgres-klausulen.
slutsats
här lärde vi oss när och hur det är bäst att använda funktionen MAX()
i PostgreSQL för att hitta det högsta värderade numret i en uppsättning siffror. Vi använde både Nybörjarnivå och svårare exempel, uppskalning av svårigheter, för att göra inlärningsprocessen så enkel som möjligt eftersom SQL ibland kan vara svårt att linda huvudet runt, särskilt när du använder GROUP BY
och HAVING
klausuler för att arbeta med delmängder av data.