Introduzione

In questo articolo, impareremo a utilizzare la funzione aggregate Max nei nostri comandi SQL Postgres da più prospettive, per ottenere un livello più profondo di comprensione. Qui discuteremo:

  • Cosa? Dal punto di vista principiante, cosa fa la funzione MAX?
  • Perché? In quali situazioni dovremmo usare la funzione Max ()?
  • Come? Come usiamo questa funzione nel nostro SQL?
  • Altro Faremo anche un certo uso del costrutto GROUP BY.

Prerequisiti

  • Comprensione a livello principiante della scrittura SQL per PostgreSQL (o Oracle, MySQL, MS SQL Server, ecc.) utilizzando lo strumento PG Admin o qualche altro strumento di amministrazione db, o tramite codice o script/linguaggi di codifica come PHP, Python, Javascript, Java, C#, ASP.Net, VB.Net, Rubino, Nodo.js, ecc.) che forniscono una connessione al database, nonché un metodo per l’invio delle query SQL del database, per ottenere dati o apportare modifiche al database.
  • Comprensione dell’uso di alcune istruzioni SQL (PL/SQL) di base, come SELECT, FROM e GROUP BY.
  • Conoscenza di cosa sono una stringa e una funzione.

Qual è la funzione MAX () e come funziona?

La funzione Postgres MAX() restituisce il valore più alto (massimo) da un insieme di numeri.

Sintassi

1
i_highest_of_set := MAX(set_of_numbers);

Perché e quando si usa la funzione MAX ()?

Ogni volta che hai un set di numeri in cui vuoi sapere quale di quel set è il più alto nel set.

Iniziamo con un esempio semplice

Inizieremo con un esempio facile da capire. Il nostro set di dati iniziale è una tabella chiamata coding_languages.

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

Presso la nostra azienda di sviluppo di software, la tabella di cui sopra denominato coding_languages dispone di tre campi, tra cui:

  • id_tech è il nostro identificatore univoco.
  • t_name è il nome del linguaggio di codifica.
  • i_rapid_dev è una valutazione intera di quanto rapidamente un codificatore medio può svilupparsi usando il linguaggio.

L’obiettivo è scoprire quale lingua ha il punteggio più alto in termini di rapido sviluppo (i_rapid_dev). Scriviamo il nostro script SQL per utilizzare la funzione MAX per recuperare il t_name che ha il valore più alto nella colonna i_rapid_dev nel nostro recordset di database PostgreSQL:

1
2
3
4
5
6
7
8
SELEZIONARE
id_tech
, t_name
, MAX(i_rapid_dev)
DA
coding_languages
GROUP BY
i_rapid_dev;

Nota per SQL esempio di cui sopra: Questo è dove usiamo la nostra conoscenza di SQL Gruppi. Puoi pensarlo in questo modo: se vuoi trovare il massimo di più di un numero, devi considerare un insieme di numeri.

Come funziona l’istruzione SQL sopra? Lo faremo passo dopo passo:

  • (1) SELECT: Stiamo dicendo al motore SQL di PostgreSQL che vogliamo un massimo di tutti i valori (perché nessuna clausola WHERE o HAVING) nella colonna i_rapid_dev.
  • (2) FROM: Specificare la tabella coding_languages da cui recuperare i nostri dati.
  • (3) GROUP BY: Dicendo a Postgres che vogliamo raggruppare i dati. La funzione MAX (), essendo una funzione aggregata, richiede il raggruppamento dei nostri dati.

La query di cui sopra restituisce| / id_tech / t_name | i_rapid_dev||:—:|—|————:| |2 / PHP / 9 /

Ora sappiamo che PHP è il più veloce in termini di sviluppo rapido.

Un altro esempio di utilizzo della funzione SQL “Max” in PostgreSQL

Il mini progetto: i dipendenti hanno valutato le tecnologie utilizzate nella nostra azienda e vogliono conoscere la tecnologia con il più alto grado. Qui esploreremo un altro uso relativamente semplice di MAX() mentre introduciamo la parola chiave “AVERE”. Ecco il nostro set di dati ” raw “con il nome della tabella di”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

andiamo piano come procedere. Vogliamo costruire una query che farà più di una cosa, tra cui:

  • (1) Considera solo le righe nel nostro set di dati in cui il valore del campo _t_categorytech (colonna) è uguale a “Lang”. Questo è dove la clausola HAVING è utile. Produrrà 3 righe. Riesci a capire perche’? Suggerimento: cerca nella tabella sopra il valore “Lang”. Notate che ce ne sono tre? In quale colonna sono?
  • (2) Restituisce il valore nel campo _t_nametech per quelle 3 righe perché vogliamo sapere con quali tecnologie vanno i gradi.
  • (3) Non ci interessa chi ha fatto la valutazione, quindi nessuna menzione della colonna _t_nameuser.
  • (4) Ottieni un MASSIMO di SOMMA dei valori di quelle 3 righe usando la colonna _igrade.
  • (5) Utilizzare GROUP BY per raggruppare le colonne appropriate.

Analisi del SQL di cui sopra:

  • (1) SELECT: Stiamo filtrando la nostra tabella Postgres per: (a) Mostra la colonna t_name_tech, (b) calcola la somma dei gradi (Sum(i_grade)) per ogni data tecnologia e (c) Mostra il massimo di tali somme (Max(i_sum_of_grades)) e assegna un nome al risultato come i_highest_grade.
  • (2) FROM: Specificando la tabella coding_languages come fonte dei nostri dati.
  • (3) GROUP BY: Notifica a PostgreSQL che stiamo raggruppando. La funzione MAX richiede per noi di raggruppare i dati che Postgres sta riassumendo internamente e trovare il più alto di.
  • (4) HAVING: Qui è dove istruiamo PostgreSQL a filtrare nelle righe che hanno “Lang” nel campo t_category_tech.

La query di cui sopra restituisce:

t_name_tech t_category_tech i_grade
PHP Lang 12

Note

  • Perché non abbiamo il nome di alcune delle nostre variabili e le colonne della tabella con il prefisso “i” o “t”? Usiamo ” i “per significare intero e” t ” per significare testo o stringa.
  • Vi invitiamo a cercare i nostri altri articoli che utilizzano il potente GROUP BY Postgres clausola.

Conclusione

Qui abbiamo imparato quando e come è meglio usare la funzione MAX() in PostgreSQL per trovare il numero con valore più alto in un insieme di numeri. Abbiamo usato sia esempi di livello principiante che più difficili, aumentando la difficoltà, in modo da rendere il processo di apprendimento il più semplice possibile perché SQL può a volte essere difficile da capire, specialmente quando si utilizzano le clausole GROUP BY e HAVING per lavorare con sottoinsiemi di dati.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.