Come utilizzare il numero di riga SQL Server

Come utilizzare il numero di riga SQL Server
Nella maggior parte dei casi, quando dobbiamo numerare gli elementi in un database, saltiamo alla proprietà Identity. Tuttavia, cosa succede quando è necessario numerare le righe di un risultato? È qui che entra in gioco la funzione del numero di riga.

La funzione del numero di riga consente di assegnare un numero sequenziale ad ogni riga a seguito di una query SQL.

La funzione row_number () fa parte delle funzioni della finestra SQL Server. Utilizzando questa funzione, è possibile assegnare un numero intero progressivo a ogni riga su ogni set di partizioni di un risultato. Ogni numero inizia a 1 e ripristina le righe in ogni partizione.

Sintassi della funzione e valore di ritorno

La sintassi della funzione è come mostrata:

Row_number ()
Over (partizione di partizione_expression
Ordine di Order_By_Expression
);

Abbattiamo la sintassi sopra.

  1. Partizione di - La clausola partizione per clausola consente di dividere il tuo risultato impostato in varie partizioni logiche. La funzione row_number viene quindi applicata a ciascuna partizione. La partizione per parametro è facoltativa e, se non specificata, la funzione row_number tratterà il set risultante come unica partizione.
  2. L'ordine per clausola consente l'ordine di ordinamento per le righe all'interno di ogni set di partizioni. A differenza della partizione per clausola, la funzione row_number richiede questa clausola come funzione sensibile all'ordine.

La funzione restituisce assegnando un numero sequenziale alle righe in ciascuna partizione. Come accennato, la funzione ripristinerà il numero di riga per ogni nuova partizione.

Sql server row_number (): esempi

Usiamo un esempio per capire meglio come utilizzare la funzione row_number (). Inizia creando un database di esempio con dati fittizi come mostrato nelle query seguenti:

Crea database Dummy_DB;
Usa dummy_db;
Crea table dummy_table (
id int non null Identity (1,1) Key primario,
FirstName Varchar (50),
LastName Varchar (50),
Email Varchar (100),
Soldi del salario,
Dipartimento Varchar (50)
);
Inserisci in Dummy_table (firstname, lastname, e -mail, stipendio, dipartimento)
Valori ('karen', 'colmen', '[email protected] ', $ 149000,' Game Development '),
("Alex", "Bell", "[email protected] ', $ 150000,' Sviluppo grafico '),
("Charles", "Johnson", "[email protected] ', $ 120500,' Devops Development '),
('Bruce', 'Greer', '[email protected] ', $ 118000,' Sviluppo della sicurezza '),
('Sarah', 'Austin', '[email protected] ', $ 165000,' Game Development '),
('Diana', 'Kim', '[email protected] ', $ 105000,' Front-End Development '),
('Peter', 'Cogh', '[email protected] ', $ 100000,' Sviluppo grafico '),
("David", "Hugh", "[email protected] ', $ 126000,' Sviluppo del database '),
('Tobias', 'Newne', '[email protected] ', $ 115500,' Sviluppo del database '),
('Winnie', 'Lorentz', '[email protected] ', $ 175000, "sviluppo grafico"),
("Guy", "Miche", "[email protected] ', $ 145000,' Game Development ');
Seleziona * da Dummy_table;

La query sopra dovrebbe restituire un set risultante come mostrato:

Esempio 1

La seguente istruzione SQL utilizza la funzione row_number per assegnare un numero sequenziale alle righe nel set risultante:

Seleziona row_number () over (
Ordine per stipendio) come row_num,
nome di battesimo,
cognome,
Dipartimento
Da dummy_table;

La query sopra dovrebbe restituire un set di risultati come mostrato di seguito:

Esempio 2

Possiamo utilizzare la funzione row_number per individuare il dipendente con il più alto stipendio in un dipartimento specifico.

Considera la query di esempio mostrata di seguito:

Seleziona firstName, lastname, stipendio, dipartimento, row_number () su (partizione per ordine di dipartimento per stipendio disc) come row_num da dummy_table;

La query sopra divide i dati in partizioni logiche basate sul dipartimento. Quindi applichiamo la funzione row_number () per ordinare per lo stipendio in ordine decrescente.

Esempio 3

È possibile utilizzare la funzione row_number per la paginazione. Poiché la funzione row_number assegna un numero sequenziale a tutte le righe, possiamo usarlo per filtrare per un numero specifico di risultati per pagina.

Prendi l'esempio di seguito:

SCELTO DA
(Seleziona row_number ()
Over (ordine per stipendio) come row_num, firstname, lastname, dipartimento
Da dummy_table) dt
Dove row_num> = 1 e row_num <= 5;

La query sopra dovrebbe restituire un output come:

Conclusione

In questa guida, abbiamo discusso di come utilizzare la funzione SQL Server Row_number () per assegnare numeri sequenziali alle righe in un set di risultati. Inoltre, abbiamo esaminato la sintassi della funzione e il valore di restituzione. Speriamo che tu abbia trovato questo articolo utile. Dai un'occhiata a altri articoli di suggerimento Linux per suggerimenti e tutorial.