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, en GROUP 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 de i_rapid_dev kolom.
  • (2) FROM: het opgeven van de coding_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 kolom t_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 als i_highest_grade.
  • (2) FROM: het opgeven van de tabel coding_languages als de bron van onze gegevens.
  • (3) GROUP BY: bericht PostgreSQL dat we groeperen. De functie MAX 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 het t_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.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.