Innledning
i denne artikkelen lærer vi å bruke aggregat Max-funksjonen i Våre POSTGRES SQL-kommandoer fra flere perspektiver, for å få et dypere forståelsesnivå. Her vil vi diskutere:
- Hva? FRA et nybegynnerperspektiv, hva GJØR MAX-funksjonen?
- Hvorfor? I hvilke situasjoner skal Vi bruke Max () – funksjonen?
- hvordan? Hvordan bruker vi denne funksjonen i VÅR SQL?
- Mer Vi vil også gjøre litt bruk AV GRUPPEN ved å konstruere.
Forutsetninger
- Nybegynner-nivå forståelse av å skrive SQL For PostgreSQL(Eller Oracle, MySQL, MS SQL Server, etc.) bruk Av Pg Admin-verktøyet eller et annet db-administrasjonsverktøy, eller via kode eller skript/kodingsspråk som PHP, Python, Javascript, Java, C#, ASP.Net, VB.Net Ruby, Node.js, etc.) som gir en databasetilkobling, samt en metode for å sende databasen SQL-spørringer, for å få data eller gjøre endringer i databasen.
- Forståelse av bruken av noen grunnleggende SQL-setninger (PL / SQL), som
SELECT
,FROM
ogGROUP BY
. - Kunnskap om hva en streng og funksjon er.
HVA ER MAX () – funksjonen og hvordan fungerer DEN?
Funksjonen Postgres MAX()
returnerer den høyeste (maksimale) verdien fra et sett med tall.
Syntaks
1
|
i_highest_of_set: = MAKS (set_of_numbers);
|
Hvorfor og når bruker VI MAX () – funksjonen?
hver gang du har et sett med tall der du vil vite hvilket av det settet som er høyest i settet.
La oss starte med et enkelt eksempel
vi begynner med et lettforståelig eksempel. Vårt første datasett er et bord som heter coding_languages.
id_tech | t_navn | i_rapid_dev |
---|---|---|
0 | Python | 7 |
1 | Java | 5 |
2 | PHP | 9 |
3 | Javascript | 8 |
på vårt programvareutviklingsselskap har tabellen ovenfor kalt coding_languages
tre felt, inkludert:
-
id_tech
er vår unike identifikator. -
t_name
er navnet på kodespråket. -
i_rapid_dev
er en heltallsevaluering av hvor raskt en gjennomsnittlig koder kan utvikle seg ved hjelp av språket.
målet er å finne ut hvilket språk som har høyest karakter når det gjelder rask utvikling (i_rapid_dev
). La oss skrive VÅRT SQL-skript for å bruke funksjonen MAX
for å hente t_name
som har den høyeste verdien i kolonnen i_rapid_dev
i PostgreSQL database recordset:
1
2 3 4 5 6 7 8 |
VELG
id_tech , t_name , MAKS(i_rapid_dev) fra coding_languages GRUPPE ETTER i_rapid_dev; |
Merk FOR SQL-eksemplet ovenfor: Det er her vi bruker vår kunnskap om SQL-Grupper. Du kan tenke på det på denne måten: hvis du vil finne maksimalt mer enn ett tall, må du vurdere et sett med tall.
hvordan FUNGERER SQL-setningen ovenfor? Vi tar det trinnvis:
- (1)
SELECT
: Vi forteller PostgreSQL ‘ S SQL-motor at vi vil ha maksimalt alle verdier (fordi ingen HVOR eller HAR klausul) i kolonneni_rapid_dev
. - (2)
FROM
: Angicoding_languages
tabellen for å hente dataene våre fra. - (3)
GROUP BY
: Forteller Postgres at vi ønsker å gruppere dataene. MAX () – funksjonen, som er en aggregatfunksjon, krever gruppering av dataene våre.
ovennevnte spørring returnerer| / id_tech / t_name | i_rapid_dev||:—:|—|————:| / 2 / PHP / 9 /
VI vet nå AT PHP er den raskeste når det gjelder rask utvikling.
Et annet eksempel på bruk av » Max » SQL-funksjonen I PostgreSQL
mini-prosjektet: vi hadde ansatte gradert teknologiene som ble brukt i vårt firma og vil vite den høyeste graderte teknologien. Her vil vi utforske en annen relativt enkel bruk av MAX()
mens vi introduserer» HA » nøkkelordet. Her er vårt» rå «datasett med tabellnavnet «technologies»:
id_tech | t_name_user | t_name_tech | t_kategori_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 |
la oss planlegge hvordan vi skal fortsette. Vi ønsker å bygge en spørring som vil gjøre mer enn en ting, inkludert:
- (1) bare vurder radene i datasettet vårt der verdien _t_categorytech-feltet (kolonne) er lik «Lang». Det er her Å ha klausulen kommer til nytte. Det vil gi 3 rader. Kan du se hvorfor? Tips: Se i tabellen over for» Lang » – verdien. Legg merke til at det er tre? Hvilken kolonne er de i?
- (2) Returner verdien i _t_nametech-feltet for de 3 radene fordi vi vil vite hvilke teknologier karakterene går med.
- (3) vi bryr oss ikke om hvem som gjorde vurderingen, så ingen omtale av kolonnen _t_nameuser.
- (4) Få MAKS SUM av verdiene til de 3 radene ved hjelp av _igrade-kolonnen.
- (5) BRUK GRUPPE ETTER til å gruppere de aktuelle kolonnene.
Analyse av SQL ovenfor:
- (1)
SELECT
: vi filtrerer Vår Postgres tabell til: (A) Vis kolonnent_name_tech
, (b) beregn summen av karakterer (Sum(i_grade)
) for hver gitt teknologi, og (c) vis maksimum av disse summene (Max(i_sum_of_grades)
) og gi resultatet navneti_highest_grade
. - (2)
FROM
: Angi tabellencoding_languages
som kilde til dataene våre. - (3)
GROUP BY
: Varsle PostgreSQL at vi er gruppering. FunksjonenMAX
krever at Vi grupperer dataene Som Postgres internt oppsummerer og finner det høyeste av. - (4)
HAVING
: Det er her Vi instruerer PostgreSQL å filtrere i radene som har «Lang» i feltett_category_tech
.
spørringen ovenfor returnerer:
t_name_tech | t_kategori_tech | i_grade |
---|---|---|
PHP | Lang | 12 |
Merknader
- Hvorfor nevnte vi noen av våre variabler og tabellkolonner med prefikset «i» eller «t»? Vi bruker «i «til å bety heltall og» t » til å bety tekst eller streng.
- vi inviterer deg til å se etter våre andre artikler som bruker den kraftige
GROUP BY
Postgres-klausulen .
Konklusjon
her lærte vi når og hvordan det er best å bruke funksjonen MAX()
I PostgreSQL for å finne det høyeste verdsatte tallet i et sett med tall. VI brukte både nybegynnernivå og vanskeligere eksempler, skalering opp vanskeligheter, for å gjøre læringsprosessen så enkel som mulig fordi SQL til tider kan være vanskelig å vikle hodet rundt, spesielt når du bruker klausulene GROUP BY
og HAVING
for å jobbe med delsett av data.