salve,
si, la clausola ORDER BY nome_colonna provvede proprio all'uopo...
poi, in base al tipo di dato della colonna stessa devi specificare anche la modalita' di ordinamento, che puo' essere crescente (ASC) o decrescente (DESC)...
se il tipo di dato e' numerico ti basta ORDER BY TIPOLOGIA DESC;
se e' alfanumerico invece va identificato "come" la "stringa" risulterebbe ordinata... "5 Stelle" risulta "maggiore" (inteso come ordinamento ascendente di tutti i caratter) rispetto a "4 stelle"..
quindi, tecnicamente,
SET NOCOUNT ON;
USE tempdb;
GO
DECLARE @t TABLE (tipo varchar(20));
INSERT INTO @t
VALUES ('2 stelle'), ('3 stelle'), ('1 stella'), ('3 stelle superiore'), ('5 stelle'), ('4 stelle superiore'), ('4 stelle'), ('5 stelle superiore');
SELECT *
FROM @t t
ORDER BY t.tipo DESC;
--------
tipo
--------------------
5 stelle superiore
5 stelle
4 stelle superiore
4 stelle
3 stelle superiore
3 stelle
2 stelle
1 stella
funziona, ma se ad esempio esistesse un "5 stelle ZOO" (inteso come un 5 stelle pessimo) l'ordinamento non sarebbe corretto, producendo come risultato
SET NOCOUNT ON;
USE tempdb;
GO
DECLARE @t TABLE (tipo varchar(20));
INSERT INTO @t
VALUES ('2 stelle'), ('3 stelle'), ('1 stella'), ('3 stelle superiore'), ('5 stelle'), ('4 stelle superiore'), ('4 stelle'), ('5 stelle superiore')
, ('5 stelle ZOO');
SELECT *
FROM @t t
ORDER BY t.tipo DESC;
-----------
tipo
--------------------
5 stelle ZOO
5 stelle superiore
5 stelle
4 stelle superiore
4 stelle
3 stelle superiore
3 stelle
2 stelle
1 stella
saluti