Introducere

în acest articol, vom învăța să folosim funcția aggregate Max în comenzile Postgres SQL din mai multe perspective, pentru a obține un nivel mai profund de înțelegere. Aici vom discuta:

  • ce? Din perspectiva începătorului, ce face funcția MAX?
  • de ce? În ce situații ar trebui să folosim funcția Max ()?
  • cum? Cum folosim această funcție în SQL-ul nostru?
  • mai mult vom face, de asemenea, o anumită utilizare a grupului de construct.

cerințe preliminare

  • înțelegerea la nivel de începător a scris SQL pentru PostgreSQL (sau Oracle, MySQL, MS SQL Server, etc.) folosind instrumentul PG Admin sau un alt instrument de administrare db, sau prin cod sau script/limbaje de codificare, cum ar fi PHP, Python, Javascript, Java, C#, ASP.Net, VB.Net, Ruby, nod.js, etc.) care oferă o conexiune la baza de date, precum și o metodă pentru trimiterea interogărilor SQL bazei de date, pentru a obține date sau a face modificări la baza de date.
  • înțelegerea utilizării unor instrucțiuni SQL de bază (PL/SQL), cum ar fi SELECT, FROM și GROUP BY.
  • cunoașterea a ceea ce sunt un șir și o funcție.

care este funcția MAX() și cum funcționează?

funcția Postgres MAX() returnează cea mai mare valoare (maximă) dintr-un set de numere.

sintaxă

1
i_highest_of_set : = MAX (set_of_numbers);

de ce și când folosim funcția MAX ()?

de fiecare dată când aveți un set de numere în care doriți să știți care din acel set este cel mai mare din set.

să începem cu un exemplu ușor

vom începe cu un exemplu ușor de înțeles. Setul nostru de date inițial este un tabel numit coding_languages.

id_tech t_name i_rapid_dev
0 Piton 7
1 Java 5
2 PHP 9
3 Javascript 8

la compania noastră de dezvoltare software, tabelul de mai sus numit coding_languages are trei domenii, inclusiv:

  • id_tech este identificatorul nostru unic.
  • t_name este numele limbajului de codificare.
  • i_rapid_dev este o evaluare întreagă a cât de rapid se poate dezvolta un coder mediu folosind limba.

scopul este de a afla care limbă are cel mai mare rating în ceea ce privește dezvoltarea rapidă (i_rapid_dev). Să scriem scriptul nostru SQL pentru a utiliza funcția MAX pentru a prelua t_name care are cea mai mare valoare în coloana i_rapid_dev din setul nostru de înregistrări de baze de date PostgreSQL:

1
2
3
4
5
6
7
8
selectați
id_tech
, t_name
, MAX (i_rapid_dev)
din
coding_languages
grup de
i_rapid_dev;

notă pentru exemplul SQL de mai sus: aici folosim cunoștințele noastre despre grupurile SQL. Vă puteți gândi astfel: dacă doriți să găsiți maximum de mai multe numere, trebuie să luați în considerare un set de numere.

cum funcționează instrucțiunea SQL de mai sus? O vom lua pas cu pas:

  • (1) SELECT: noi spunem motorul SQL PostgreSQL că dorim un maxim de toate valorile (pentru că nu în cazul în care sau având clauza) în i_rapid_dev coloană.
  • (2) FROM: specificarea tabelului coding_languages pentru a prelua datele noastre.
  • (3) GROUP BY: spunându-i lui Postgres că vrem să grupăm datele. Funcția MAX (), fiind o funcție agregată, necesită gruparea datelor noastre.

interogarea de mai sus se întoarce| / id_tech | t_name / i_rapid_dev||:—:|—|————:| | 2 |PHP / 9 /

știm acum că PHP este cel mai rapid în ceea ce privește dezvoltarea rapidă.

un alt exemplu de utilizare a funcției SQL „Max” în PostgreSQL

proiectul mini: am avut angajați care au notat tehnologiile utilizate la compania noastră și doresc să cunoască cea mai înaltă tehnologie. Aici vom explora o altă utilizare relativ simplă a MAX() în timp ce introducem cuvântul cheie „având”. Iată setul nostru de date „brut” cu numele tabelului „tehnologii”:

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

să planificăm cum să procedăm. Vrem să construim o interogare care va face mai mult de un lucru, inclusiv:

  • (1) Luați în considerare doar rândurile din setul nostru de date în care valoarea câmpului (coloanei) _t_categorytech este egală cu „Lang”. Acest lucru este în cazul în care clauza având vine la îndemână. Acesta va da 3 rânduri. Poți vedea de ce? Sugestie: căutați în tabelul de mai sus valoarea „Lang”. Observați că sunt trei? În ce coloană sunt?
  • (2) returnați valoarea în câmpul _t_nametech pentru acele 3 rânduri, deoarece vrem să știm cu ce tehnologii merg notele.
  • (3) Nu ne pasă cine a făcut evaluarea, deci nici o mențiune a coloanei _t_nameuser.
  • (4) Obțineți o sumă maximă a valorilor celor 3 rânduri folosind coloana _igrade.
  • (5) Utilizați GROUP BY pentru a grupa coloanele corespunzătoare.

analiza SQL de mai sus:

  • (1) SELECT: filtrăm tabelul Postgres pentru a: (a) arată coloana t_name_tech, (b) calculează suma gradelor (Sum(i_grade)) pentru fiecare tehnologie dată și (c) arată maximul acestor sume (Max(i_sum_of_grades)) și denumește rezultatul ca i_highest_grade.
  • (2) FROM: specificând tabelul coding_languages ca sursă a datelor noastre.
  • (3) GROUP BY: Notificarea PostgreSQL pe care o grupăm. Funcția MAX ne cere să grupăm datele pe care Postgres le însumează intern și să le găsim pe cele mai înalte.
  • (4) HAVING: aici instruim PostgreSQL să filtreze în rândurile care au „Lang” în câmpul t_category_tech.

interogarea de mai sus se întoarce:

t_name_tech t_category_tech i_grade
PHP lang 12

Note

  • de ce am numit unele dintre variabilele și coloanele noastre de tabel cu un prefix de „i” sau „t”? Folosim „i „pentru a însemna întreg și” t ” pentru a însemna text sau șir.
  • vă invităm să căutați celelalte articole care utilizează clauza puternică GROUP BY Postgres.

concluzie

aici am învățat când și cum este mai bine să folosiți funcția MAX() în PostgreSQL pentru a găsi cel mai mare număr evaluat dintr-un set de numere. Am folosit atât Exemple la nivel de începător, cât și exemple mai dificile, mărind dificultatea, astfel încât procesul de învățare să fie cât mai ușor posibil, deoarece SQL poate fi uneori dificil să vă înfășurați capul, mai ales atunci când utilizați clauzele GROUP BY și HAVING pentru a lucra cu subseturi de date.

Lasă un răspuns

Adresa ta de email nu va fi publicată.