Sql Server Query Posizione

lunedì 28 febbraio 2011 - 11.08

nandonando Profilo | Senior Member

é possibile secondo voi tramite una query avere una specie di classifica?
Mi spiego meglio ho un elenco di locali che vengono caricati in una pagina al caricamento poi di ogni singolo dato si attiva un'altra query che mi da la media dei voti che ha ottenuto vorrei se possibile dare a video,tramite query o altro, la posizione in base al voto esemio:
media 5 : 1 posto
media 4: 2 posto
media 3: 3 posto.
Spero essere stato chiaro.

http://www.gustoroma.it

alx_81 Profilo | Guru

Ciao
>Mi spiego meglio ho un elenco di locali che vengono caricati
>in una pagina al caricamento poi di ogni singolo dato si attiva
>un'altra query che mi da la media dei voti che ha ottenuto vorrei
>se possibile dare a video,tramite query o altro, la posizione
>in base al voto esemio:
>media 5 : 1 posto
>media 4: 2 posto
>media 3: 3 posto.
Se riesci ad ottenere una sola query legando la prima con la seconda (credo che non avrai difficoltà) potrai usare le RANKING FUNCTION per stilare la tua classifica: http://msdn.microsoft.com/en-us/library/ms176102.aspx

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

nandonando Profilo | Senior Member

Non la vedo cosi semplice dimi come risolveresti
Al momento funziona cosi:
1° query carica locali
2° query(all'interno della prima) carica media voti di ogni singolo
3° query (quella della posizione dovrebbe essere caricata al caricamento del locale)
http://www.gustoroma.it

alx_81 Profilo | Guru

>Non la vedo cosi semplice dimi come risolveresti
>Al momento funziona cosi:
>1° query carica locali
>2° query(all'interno della prima) carica media voti di ogni singolo
>3° query (quella della posizione dovrebbe essere caricata al
>caricamento del locale)
puoi postare un esempio di sql scritto, altrimenti così non è semplice aiutarti..

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

nandonando Profilo | Senior Member

Più che un aiuto in sql mi serviva a livello ligico.
Ovviamente sempre se puoi
http://www.gustoroma.it

alx_81 Profilo | Guru

>Più che un aiuto in sql mi serviva a livello ligico.
logicamente si tratta di prendere il resultset che ricava il valore di valutazione e classificarlo in base all'ordinamento su quel valore.
Ti ho fatto un esempio da eseguire in modo che tu possa vedere cosa intendo:
USE tempdb; GO CREATE TABLE dbo.FeedbackLocali ( IDLocale int , FeedbackUtente decimal(5,2) NOT NULL , NumeroFeedback int NOT NULL , CONSTRAINT PK_dboFeedbackLocali PRIMARY KEY CLUSTERED ( IDLocale , NumeroFeedback ) ) GO -- locale 1 INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (1, 5, 1) INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (1, 2, 2) INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (1, 3, 3) INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (1, 2, 4) INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (1, 2, 5) -- locale 2 INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (2, 1, 1) INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (2, 1, 2) INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (2, 2, 3) -- locale 3 INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (3, 5, 1) INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (3, 5, 2) INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (3, 5, 3) INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (3, 4, 4) -- locale 4 INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (4, 4, 1) INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (4, 3, 2) INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (4, 3, 3) INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (4, 3, 4) -- locale 5 INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (5, 2, 1) INSERT INTO dbo.FeedbackLocali (IDLocale, FeedbackUtente, NumeroFeedback) VALUES (5, 3, 2) GO -- test dati SELECT * FROM dbo.FeedbackLocali ORDER BY IDLocale, NumeroFeedback -- dati classificati SELECT IDLocale , Media = CAST(AVG(FeedbackUtente) AS decimal(5,2)) , Posizione = RANK() OVER(ORDER BY CAST(AVG(FeedbackUtente) AS decimal(5,2))) FROM dbo.FeedbackLocali GROUP BY IDLocale -- stesso algoritmo usando with ;WITH Medie (IDLocale, Media) AS ( SELECT IDLocale , CAST(AVG(FeedbackUtente) AS decimal(5,2)) FROM dbo.FeedbackLocali GROUP BY IDLocale ) SELECT IDLocale , Media , Posizione = RANK() OVER(ORDER BY Media) FROM Medie DROP TABLE dbo.FeedbackLocali GO

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5