sql >> Databasteknik >  >> RDS >> Database

Hur man sorterar i SQL

Problem:

Du vill sortera resultatet av en SQL-fråga i stigande eller fallande ordning.

Exempel:

Vår databas har en tabell som heter salary_information med data i kolumnerna id , first_name , last_name och monthly_earnings . Vi vill sortera de anställda efter deras monthly_earnings i fallande ordning.

id förnamn efternamn månatliga_intäkter
1 Calvin Rios 3500
2 Alan Paterson 4000
3 Kurt Evans 2300
4 Alex Watkins 5500

Lösning:

Vi kommer att använda en ORDER BY klausul. Här är frågan:

Vi använder funktionen CURRENT_DATE för att få aktuellt datum:

	SELECT
		first_name,
		last_name,
		monthly_earnings
	FROM salary_information
	ORDER BY monthly_earnings DESC

Här är resultatet av frågan:

förnamn efternamn månatliga_intäkter
Alex Watkins 5500
Alan Paterson 4000
Calvin Rios 3500
Kurt Evans 2300

Nu kan vi se att Alex Watkins är först på listan, vilket betyder att han tjänar mest pengar.

Diskussion:

Använd en ORDER BY om du vill sortera datamängden i antingen stigande eller fallande ordning. Syntaxen för en ORDER BY klausulen är som följer:

SELECT col1, col2, …
FROM table
ORDER BY col1, col2, … ASC|DESC;

I ovanstående, ASC|DESC betyder att du ska välja antingen nyckelordet ASC (stigande) eller DESC (fallande) för att ordna datasetet som du vill.

Förutom att sortera efter numeriska kolumner, kan du också sortera efter textkolumner. En ORDER BY kommer att sortera textkolumner i alfabetisk ordning.

Istället för kolumnnamnet kan du också använda kolumnens position från vänster. Så i vårt exempel, istället för att skriva:

ORDER BY monthly_earnings DESC

du kan också skriva:

ORDER BY 3 DESC

Om du vill sortera tabellen från exemplet efter first_name kolumn i alfabetisk (stigande) ordning kan du använda följande fråga:

SELECT
	first_name,
	last_name,
	monthly_earnings
FROM salary_information
ORDER BY first_name ASC

Det är också värt att notera att du kan sortera efter flera kolumner. Detta är användbart när vissa värden i en viss kolumn upprepas och du behöver ytterligare sortering. I det här fallet, separera kolumnnamnen med kommatecken i ORDER BY-satsen.

Du kan till och med sortera i stigande ordning efter en kolumn och i fallande ordning efter en annan. Följande illustrerar syntaxen för denna kombination:

	ORDER BY Col1 ASC, Col2 DESC;
	

Om du utelämnar ASC eller DESC nyckelord, utförs en stigande sortering som standard.


  1. När ska man använda ärvda tabeller i PostgreSQL?

  2. TSQL PIVOT FLERA KOLUMNER

  3. Varför frågan inte sparas i csv-fil medan det verkar normalt i postgresql-konsolen

  4. Barman 2.11:barman-cloud-restore och barman-cloud-wal-restore