Query per ricerca ritardo evento

di Anonimizzato28228 il
2 risposte
Salve a tutti,
sono a chiedere il vostro aiuto per tentare di risolvere una query che mi sta facendo impazzire da 2 giorni.
Ho una tabella (tb_match) nella quale raccolgo i dati di eventi calcistici (Nazione, Lega, Match, Risultati, Quote1X2, etc). Attraverso una query (q_match), con dei campi calcolati ottengo nuove colonne dove raccolgo statistiche sul singolo evento (Esito 1X2, percentuali di successo, etc). Di seguito un estratto del risultato ottenuto:

QUOTA 1	QUOTA X	QUOTA 2	ESITO 1X2
2,5	3,5	2,62	1
2,25	3,2	3,25	X
2,87	3,39	2,37	2
1,8	3,75	3,39	2
Poi ho un'ulteriore query che mi calcola quanti eventi 1, quanti x e quanti 2 si sono verificati per una determinata terzina di quote, ottenendo:

QUOTA 1	QUOTA X	QUOTA 2	TOT_1X2	TOT_EV1	TOT_EVX	TOT_EV2
2,5	3,5	2,62	18	10	3	5
2,25	3,2	3,25	13	3	6	4
2,87	3,39	2,37	22	10	4	8
1,8	3,75	3,39	11	8	2	1
Infine ho un'ultima query con la quale estraggo, per ogni terzina di quote, tutti gli eventi usciti, ovvero:

QUOTA 1	QUOTA X	QUOTA 2	ESITO
2,5	3,5	2,62	1
2,5	3,5	2,62	X
2,5	3,5	2,62	2
2,5	3,5	2,62	2
Fin qui tutto ok. Il problema sorge nel momento in cui voglio aggiungere alla query un'ulteriore colonna (chiamata ritardi) che mi calcola il ritardo di un evento (1 oppure X oppure 2) per una determinata terzina di quote 1X2 e che me lo riproponga per ogni record. Il risultato che vorrei ottenere è il seguente:

QUOTA 1	QUOTA X	QUOTA 2	TOT_1X2	TOT_EV1	TOT_EVX	TOT_EV2	RIT1	RITX	RIT2
2,5	3,5	2,62	18	10	3	5	3	2	0
Spero di essermi spiegato bene perchè la cosa è abbastanza contorta, o almeno lo è per me che non sono espertissimo di Database.
Grazie anticipatamente.

2 Risposte

  • Fin qui tutto ok. Il problema sorge nel momento in cui voglio aggiungere alla query un'ulteriore colonna (chiamata ritardi) che mi calcola il ritardo di un evento (1 oppure X oppure 2) per una determinata terzina di quote 1X2 e che me lo riproponga per ogni record. Il risultato che vorrei ottenere è il seguente:
    CODICE: SELEZIONA TUTTO
    
    QUOTA 1	QUOTA X	QUOTA 2	TOT_1X2	TOT_EV1	TOT_EVX	TOT_EV2	RIT1	RITX	RIT2
    2,5	3,5	2,62	18	10	3	5	3	2	0
    In più cosa sarebbero questi ritardi?
    In quale delle tre query vorresti aggiungere questi ritardi?
    Che espressione useresti per calcolare questi ritardi?
  • Ciao e grazie per la risposta....come già anticipato, la colonna ritardi dovrebbe riportare i ritardi degli eventi 1-x-2 per ogni terzina di quote. Ad esempio, nell'ultimo mese ci sono state 10 partite che hanno avuto le quote 1=2,5, X=3,5, 2=2,65. Ovviamente queste partite sono terminate con un determinato risultato, quindi immaginiamo che:
    Partita 1 (con quota1= 2,5, quotax=3,5, quota2=2,62) - Terminata con Segno 2
    Partita 2 (con quota1= 2,5, quotax=3,5, quota2=2,62) - Terminata con Segno X
    Partita 3 (con quota1= 2,5, quotax=3,5, quota2=2,62) - Terminata con Segno 2
    Partita 4 (con quota1= 2,5, quotax=3,5, quota2=2,62) - Terminata con Segno 1
    Partita 5 (con quota1= 2,5, quotax=3,5, quota2=2,62) - Terminata con Segno 1
    Partita 6 (con quota1= 2,5, quotax=3,5, quota2=2,62) - Terminata con Segno 1
    Partita 7 (con quota1= 2,5, quotax=3,5, quota2=2,62) - Terminata con Segno X
    Partita 8 (con quota1= 2,5, quotax=3,5, quota2=2,62) - Terminata con Segno 2
    Partita 9 (con quota1= 2,5, quotax=3,5, quota2=2,62) - Terminata con Segno X
    Partita 10 (con quota1= 2,5, quotax=3,5, quota2=2,62) - Terminata con Segno 2

    Da questa situazione io vorrei contare da quante partite non si verifica il segno 1 (nell'esempio mi dovrebbe dare come risultato 4). Stessa cosa dovrei fare con i segni X e 2.
    A me servirebbe aggiungere la colonna ritardi (che poi in realtà sono 3 colonne, ovvero ritardi1, ritardix e ritardi2) alla prima query (chiamata q_match), ovvero la query che io definisco "totale" perchè sarà quella che conterrà tutte le informazioni che mi servono.
    La query con la quale sono riuscito ad ottenere i risultati che più si avvicinano alle mie esigenze è la seguente:

    SELECT Count(*) AS ritardi1
    FROM q_match
    WHERE q_match.ID>(SELECT top 1 ID FROM q_match WHERE esito_1X2="1" ORDER BY ID desc);

    Il problema è che questa query considera l'intero campo "esito_1x2", indipendentemente dalle quote, quindi per ogni record mi riporta sempre e solo il numero corrispondente all'ultimo evento "1" dell'intera colonna "esito_1x2".
Devi accedere o registrarti per scrivere nel forum
2 risposte