Inleiding
In dit artikel leren we de aggregate Max-functie te gebruiken in onze Postgres SQL-commando ‘ s vanuit meerdere perspectieven, om een dieper niveau van begrip te krijgen. Hier zullen we bespreken:
- wat? Wat doet de MAX-functie vanuit een beginnersperspectief?
- waarom? In welke situaties moeten we de Max() functie gebruiken?
- hoe? Hoe gebruiken we deze functie in onze SQL?
- meer we zullen ook gebruik maken van de groep door construct.
vereisten
- beginnersniveau begrip van het schrijven van SQL voor PostgreSQL (of Oracle, MySQL, MS SQL Server, enz.) met behulp van de PG Admin tool of een andere db administratie tool, of via code of script / codering talen zoals PHP, Python, Javascript, Java, C#, ASP.Net, VB.Net Ruby, Node.js, enz.) die een database verbinding bieden, evenals een methode voor het verzenden van de database SQL query ‘ s, om gegevens te krijgen of wijzigingen aan te brengen in uw database.
- inzicht in het gebruik van enkele basis SQL (PL/SQL) statements, zoals
SELECT
,FROM
, enGROUP BY
. - kennis van wat een string en functie zijn.
Wat is de functie MAX() en hoe werkt het?
de functie Postgres MAX()
geeft de hoogste (maximum) waarde van een reeks getallen terug.
syntaxis
1
|
i_highest_of_set: = MAX (set_of_numbers));
|
waarom en wanneer gebruiken we de MAX() functie?
elke keer dat u een verzameling getallen hebt waar u wilt weten welke van die verzameling het hoogste is in de verzameling.
laten we beginnen met een eenvoudig voorbeeld
we beginnen met een gemakkelijk te begrijpen voorbeeld. Onze initiële dataset is een tabel met de naam coding_languages.
id_tech | t_name | i_rapid_dev |
---|---|---|
0 | Python | 7 |
1 | Java | 5 |
2 | PHP | 9 |
3 | Javascript | 8 |
Op onze software development company, is de bovengenoemde tabel met de naam coding_languages
heeft drie velden, met inbegrip van:
-
id_tech
is onze unieke identifier. -
t_name
is de naam van de codeertaal. -
i_rapid_dev
is een integer evaluatie van hoe snel een gemiddelde coder zich kan ontwikkelen met behulp van de taal.
het doel is om uit te vinden welke taal de hoogste waardering heeft in termen van snelle ontwikkeling (i_rapid_dev
). Laten we ons SQL script schrijven om de MAX
functie te gebruiken om de t_name
op te halen die de hoogste waarde heeft in de i_rapid_dev
kolom in onze PostgreSQL database recordset:
1
2 3 4 5 6 7 8 |
SELECTEER
id_tech , t_name , MAX(i_rapid_dev) VAN coding_languages GROEP i_rapid_dev; |
Noot voor de SQL voorbeeld: Dit is waar wij gebruik van onze kennis van SQL Groepen. Je kunt het zo zien: als je het maximum van meer dan één getal wilt vinden, moet je een set getallen overwegen.
Hoe werkt het bovenstaande SQL-statement? We doen het stap voor stap.:
- (1)
SELECT
: we vertellen PostgreSQL ‘ s SQL engine dat we een maximum van alle waarden willen (omdat er geen waar of een clausule is) in dei_rapid_dev
kolom. - (2)
FROM
: het opgeven van decoding_languages
tabel om onze gegevens uit op te halen. - (3)
GROUP BY
: Postgres vertellen dat we de data willen groeperen. De MAX() functie, die een geaggregeerde functie is, vereist groepering van onze gegevens.
de bovenstaande zoekopdracht retourneert: / id_tech / t_name / i_rapid_dev||:—:|—|————:| | 2 |PHP / 9 /
we weten nu dat PHP de snelste is in termen van snelle ontwikkeling.
een ander voorbeeld van het gebruik van de “Max” SQL-functie in PostgreSQL
het mini-project: we lieten medewerkers de technologieën beoordelen die in ons bedrijf worden gebruikt en wilden de technologie met de hoogste classificatie kennen. Hier zullen we een ander relatief eenvoudig gebruik van MAX()
onderzoeken terwijl we het sleutelwoord “hebben” introduceren. Hier is onze “ruwe” dataset met de tabelnaam”technologieën”:
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 |
laten we plannen hoe we verder gaan. We willen een query bouwen die meer dan één ding zal doen, inclusief:
- (1) overweeg alleen de rijen in onze gegevensverzameling waar de waarde van het veld _t_categorytech (kolom) gelijk is aan “Lang”. Dit is waar de hebben clausule van pas komt. Het levert 3 rijen op. Zie je waarom? Hint: kijk in de tabel hierboven voor de “Lang” waarde. Zie je dat er drie zijn? In welke kolom zitten ze?
- (2) retourneer de waarde in het veld _t_nametech voor die 3 rijen omdat we willen weten met welke technologieën de rangen gaan.
- (3) Het maakt ons niet uit wie de beoordeling heeft gemaakt, dus geen vermelding van de kolom _t_nameuser.
- (4) Krijg een maximum van de som van de waarden van die 3 rijen met behulp van de kolom _igrade.
- (5) Gebruik Groep voor om de juiste kolommen te groeperen.
analyse van bovenstaande SQL:
- (1)
SELECT
: we filteren onze Postgres tabel naar: (a) de kolomt_name_tech
weergeven, (b) de som van de klassen (Sum(i_grade)
) berekenen voor elke gegeven technologie, en (c) het maximum van deze bedragen (Max(i_sum_of_grades)
) weergeven en het resultaat noemen alsi_highest_grade
. - (2)
FROM
: het opgeven van de tabelcoding_languages
als de bron van onze gegevens. - (3)
GROUP BY
: bericht PostgreSQL dat we groeperen. De functieMAX
vereist voor ons om de gegevens te groeperen die Postgres intern optelt en het hoogste van de gegevens vindt. - (4)
HAVING
: Dit is waar we PostgreSQL instrueren om te filteren in de rijen die “Lang” hebben in hett_category_tech
veld.
De query hierboven geeft:
t_name_tech | t_category_tech | i_grade |
---|---|---|
PHP | Lang | 12 |
Opmerkingen
- Waarom hebben we een aantal van onze variabelen en kolommen van tabel met een voorvoegsel van een “ik” of “t”? We gebruiken ” i “om integer te betekenen en” t ” om tekst of string te betekenen.
- wij nodigen u uit om te zoeken naar onze andere artikelen die gebruik maken van de krachtige
GROUP BY
Postgres clausule.
conclusie
hier hebben we geleerd wanneer en hoe het het beste is om de functie MAX()
in PostgreSQL te gebruiken om het hoogste getal in een reeks getallen te vinden. We gebruikten zowel beginner-niveau als moeilijkere voorbeelden, het vergroten van de moeilijkheidsgraad, om het leerproces zo eenvoudig mogelijk te maken, omdat SQL soms moeilijk te begrijpen kan zijn, vooral wanneer je de GROUP BY
en HAVING
clausules gebruikt om met subsets van data te werken.