Blog Stats
  • Posts - 67
  • Articles - 0
  • Comments - 438
  • Trackbacks - 1302

 

SQL-Query contest...

Ieri mi è arrivata da un mio collega la seguente mail:

"Se avete voglia di fare un po' di pratica con le query, vi mando quella che ho fatto stamattina.
Magari riuscite a trovare una soluzione più elegante della mia...

Voi avete questa "vista": _v1(Matricola, DataInizio, DataFine, Classe)
La tabella contiene un elenco di periodi in cui una determinata persona è legata ad una classe.

Il problema è che eventuali periodi consecutivi e con la stessa classe non sono 'accorpati'.
Esempio: per l'ospite con matricola 2004 ci sono queste due righe:

Matricola DataInizio DataFine Classe
123 2003-10-01 2003-11-10 CL4
123 2003-11-11 2004-12-31 CL4
123 2005-01-01 2005-01-15 CL1
123 2005-01-16 2100-12-31 CL4

 

Mentre il risultato che si vuole ottenere è

Matricola DataInizio DataFine Classe
123 2003-10-01 2004-12-31 CL4
123 2005-01-01 2005-01-15 CL1
123 2005-01-16 2100-12-31 CL4


Per ottenere il risultato finale non è possibile eseguire stored procedure con cursori, ecc. ma solamente una o più altre query."

 

Bene, io l'ho presa come una mini-sfida e mi sono messo subito all'opera e, nel giro di un'oretta, ho partorito una bella query che risolveva il problema in modo abbastanza elegante.
L'ho provata sul DB ed è risultata l'unica funzionante!!! :-D

Se volete cimentarvi nell'impresa (niente-di-che, per carità...) postate pure le vostre Query e vediamo se esiste una soluzione più elegante e performante di quella che ho trovato io... sono sicuro di sì... sigh! :,-(

NB: Se qualche mal pensante credesse che stia cercando in modo subdolo la soluzione di un problema che ho, mi mandi pure un e-mail che gli spedisco la mia soluzione... B-)


Feedback

# re: SQL-Query contest...

Gravatar Forse non ho capito cosa richiedi ....

cmq ecco la mia query

SELECT matricola,MIN(datainizio),MAX(datafine),classe
FROM tabella GROUP BY matricola,classe

Ciao


25/03/2005 9.02 | Matteo

# re: SQL-Query contest...

Gravatar Non è così semplice... la persona in questione può anche cambiare Classe più volte nell'arco dell'anno e può entrare ed uscire dalla stessa classe più volte... quindi la tua soluzione non va bene per il seguente caso.

Comunque, mi rendo conto che il post non era chiaro... lo modifico subito! 25/03/2005 9.19 | VolpeFox

Post a comment





 

Please add 1 and 8 and type the answer here:

 

 

Copyright © Alejandro Gonzalez