Funzione di finestra di rango mysql

Funzione di finestra di rango mysql
Il metodo di classificazione assegna un grado all'interno della partizione di un risultato di un set su ogni riga. Il grado di una riga è determinato aumentando una figura di ranghi dalla riga che la precede. MySQL utilizza una funzione di classificazione che aiuta un rango per riga in una partizione dello schema. In MySQL, i metodi di valutazione sono effettivamente una semi-parte del metodo della finestra. Utilizzerai i metodi di valutazione in MySQL con le clausole successive:
  • I metodi funzionano sempre con una clausola over ().
  • In ordine cronologico, allocano ogni fila un grado.
  • A seconda dell'ordine di, le funzioni assegnano un grado in ogni riga.
  • Le righe sembrano sempre avere un rango assegnato a loro, a cominciare da uno per ogni nuova partizione.

In totale, ci sono tre tipi di funzioni di classificazione, come segue:

  • Rango
  • Rango denso
  • Rank percentuale

Rango mysql ():

Questo è un metodo che fornisce un rango all'interno di una partizione o un array di esito con Lava per riga. Cronologicamente, la classifica delle righe non è sempre allocata (i.e., aumentato di uno dalla riga precedente). Anche quando hai un pareggio tra molti dei valori, a quel punto, l'utilità di rango () applica la stessa classifica ad essa. Inoltre, il suo rango precedente più una cifra di numeri ripetuti può essere il numero di rango successivo.

Per comprendere la classifica, apri la shell client della riga di comando e digita la tua password MySQL per iniziare a utilizzarla.

Supponiamo che abbiamo una tabella sotto denominata "Same" all'interno di un database "dati", con alcuni record.

>> Seleziona * dai dati.Stesso;

Esempio 01: Simple Rank ()

Di seguito, abbiamo utilizzato la funzione di rango all'interno del comando seleziona. Questa query seleziona la colonna "ID" dalla tabella "Same" mentre la classifica in base alla colonna "ID". Come puoi vedere, abbiamo dato un nome alla colonna di classifica, che è "my_rank". La classifica sarà ora archiviata in questa colonna, come mostrato di seguito.

>> Seleziona ID, Rank () Over (Order per ID) MY_RANK da FATA.Stesso;

Esempio 02: Rank () usando la partizione

Supponiamo che un'altra tabella "dipendente" in un database "dati" con i seguenti record. Facciamo un'altra istanza che divide il risultato impostato in segmenti.

>> Seleziona * dai dati.dipendente;

Per consumare il metodo di rango (), l'istruzione successiva assegna il grado a ogni riga e divide il risultato impostato in partizioni che utilizzano "età" e ordinandole a seconda del "stipendio". Questa query ha ottenuto tutti i record mentre si classifica in una colonna "New_rank". Puoi vedere l'output di questa query di seguito. Ha ordinato il tavolo secondo "stipendio" e lo ha diviso in base a "età".

>> seleziona *, rango () su (partizione per ordine di età per salario) new_rank dai dati.dipendente;

Mysql dense_rank ():

Questa è una funzionalità in cui, senza buchi, determina un grado per ogni riga all'interno di una divisione o set di risultati. La classifica delle righe è più spesso assegnata in ordine sequenziale. A volte, hai un legame tra i valori, e quindi è assegnato al rango esatto dal rango denso, e il suo rango successivo è il numero successivo successivo.

Esempio 01: Simple Dense_Rank ()

Supponiamo di avere una tabella "dipendente" e devi classificare le colonne della tabella, "nome" e "stipendio" secondo la colonna "Nome". Abbiamo creato una nuova colonna "Dens_rank" per archiviare la valutazione dei record. Dopo aver eseguito la query seguente, abbiamo i seguenti risultati con una classifica diversa per tutti i valori.

>> Seleziona nome, stipendio, dense_rank () sopra (ordine per nome) dens_rank dai dati.dipendente;

Esempio 02: Dense_Rank () usando la partizione

Vediamo un'altra istanza che divide il risultato impostato in segmenti. Secondo la sintassi seguente, il set risultante partizionato dalla partizione per frase viene restituito dall'istruzione from e il metodo Dense_rank () viene quindi imbrattato su ciascuna sezione usando la colonna "Nome". Quindi, per ogni segmento, l'Ordine per frase sbatte per determinare l'imperativo delle righe usando la colonna "Age".

>> Seleziona nome, età, stipendio, dense_rank () su (partizione per ordine di nome per età) new_rank dai dati.dipendente;

All'esecuzione della query sopra, puoi vedere che abbiamo un risultato molto distinto rispetto al metodo singolo dense_rank () nell'esempio sopra. Abbiamo ottenuto lo stesso valore ripetuto per ogni valore di riga, come puoi vedere di seguito. È il legame dei valori di rango.

Mysql percent.rank ():

È davvero un metodo percentuale di classifica (rango comparativo) che calcola per le righe all'interno di una partizione o della raccolta dei risultati. Questo metodo restituisce un elenco da una scala di valore da zero a 1.

Esempio 01: Simple percent_Rank ()

Usando la tabella "Employee", abbiamo esaminato l'esempio del metodo Simple percent_Rank (). Abbiamo una determinata domanda di seguito per questo. La colonna Per_Rank è stata generata dal metodo percentuale_rank () per classificare il risultato impostato nel modulo percentuale. Abbiamo recuperato i dati in base all'ordine di ordinamento della colonna "età" e quindi abbiamo classificato i valori di questa tabella. Il risultato della query per questo esempio ci ha dato una classifica percentuale per i valori presentati nell'immagine seguente.

>> seleziona *, percent_rank () oltre (ordine per età) per_rank dai dati.dipendente;

Esempio 02: Percent_rank () usando la partizione

Dopo aver fatto il semplice esempio di percent_rank (), ora è il turno per la clausola "Partition by". Abbiamo usato la stessa tabella "dipendente". Facciamo un altro assaggio di un altro istanza che divide il risultato impostata in sezioni. Dato dalla sintassi seguente, il muro di set risultante dalla partizione per espressione viene rimborsato dalla dichiarazione da Dall'A, così come il metodo percent_rank () viene quindi utilizzato per classificare ogni ordine di riga con la colonna "nome". Nell'immagine visualizzata di seguito, è possibile visualizzare il set di risultati contiene solo 0 e 1 valori.

>> seleziona *, percent_rank () su (partizione per ordine salariale per nome) per_rank dai dati.dipendente;

Conclusione:

Infine, abbiamo svolto tutte e tre le funzioni di classificazione per le righe utilizzate in MySQL, tramite la shell del client di comando MySQL. Inoltre, abbiamo preso in considerazione sia la clausola semplice che di partizione nel nostro studio.