Como hacer query estadistica euromillon

Tengo una tabla con los campos fecha, n1, n2, n3, n4, n5, e1, e2, me gustaría hacer consultas para sacar estadísticas de los números que más han salido en los últimos 10,20,300, sorteos por ejemplo, como la imagen de abajo. Alguien me puede ayudar, gracias.

Respuesta
1

Podría ser algo así:

# ULTIMOS 300 SORTEOS
select Numero, sum(Contador) Veces_que_salio_en_ultimos_300_sorteos from (
select fecha, n1 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n2 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n3 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n4 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n5 AS Numero, 1 AS Contador from sorteos) N
WHERE fecha <= CURDATE() AND fecha >= (select min(fecha) from (select fecha from sorteos order by fecha desc limit 300) ultimos)
GROUP BY Numero ORDER BY Veces_que_salio_en_ultimos_300_sorteos DESC;

# ULTIMOS 20 SORTEOS
select Numero, sum(Contador) Veces_que_salio_en_ultimos_20_sorteos from (
select fecha, n1 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n2 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n3 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n4 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n5 AS Numero, 1 AS Contador from sorteos) N
WHERE fecha <= CURDATE() AND fecha >= (select min(fecha) from (select fecha from sorteos order by fecha desc limit 20) ultimos)
GROUP BY Numero ORDER BY Veces_que_salio_en_ultimos_20_sorteos DESC;

# ULTIMOS 10 SORTEOS
select Numero, sum(Contador) Veces_que_salio_en_ultimos_10_sorteos from (
select fecha, n1 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n2 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n3 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n4 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n5 AS Numero, 1 AS Contador from sorteos) N
WHERE fecha <= CURDATE() AND fecha >= (select min(fecha) from (select fecha from sorteos order by fecha desc limit 10) ultimos)
GROUP BY Numero ORDER BY Veces_que_salio_en_ultimos_10_sorteos DESC;

# ULTIMOS 300 SORTEOS
select Numero, sum(Contador) Veces_que_salio_en_ultimos_300_sorteos from (
select fecha, n1 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n2 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n3 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n4 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n5 AS Numero, 1 AS Contador from sorteos) N 
WHERE fecha <= CURDATE() AND fecha >= (select min(fecha) from (select fecha from sorteos order by fecha desc limit 300) ultimos)
GROUP BY Numero ORDER BY Veces_que_salio_en_ultimos_300_sorteos DESC;
# ULTIMOS 20 SORTEOS
select Numero, sum(Contador) Veces_que_salio_en_ultimos_20_sorteos from (
select fecha, n1 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n2 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n3 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n4 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n5 AS Numero, 1 AS Contador from sorteos) N 
WHERE fecha <= CURDATE() AND fecha >= (select min(fecha) from (select fecha from sorteos order by fecha desc limit 20) ultimos)
GROUP BY Numero ORDER BY Veces_que_salio_en_ultimos_20_sorteos DESC;
# ULTIMOS 10 SORTEOS
select Numero, sum(Contador) Veces_que_salio_en_ultimos_10_sorteos from (
select fecha, n1 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n2 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n3 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n4 AS Numero, 1 AS Contador from sorteos
UNION
select fecha, n5 AS Numero, 1 AS Contador from sorteos) N 
WHERE fecha <= CURDATE() AND fecha >= (select min(fecha) from (select fecha from sorteos order by fecha desc limit 10) ultimos)
GROUP BY Numero ORDER BY Veces_que_salio_en_ultimos_10_sorteos DESC;

Cambiar tabla sorteos por tu tabla con los campos n1, n2, n3, n4, n5

¡Gracias!

Con esta me vale en access:

select numero, sum(contador) as veces from (
select fecha, n1 AS Numero, 1 AS Contador from resultados where n1 is not null
UNION
select fecha, n2 AS Numero, 1 AS Contador from resultados where n2 is not null
UNION
select fecha, n3 AS Numero, 1 AS Contador from resultados where n3 is not null
UNION
select fecha, n4 AS Numero, 1 AS Contador from resultados where n4 is not null
UNION
select fecha, n5 AS Numero, 1 AS Contador from resultados where n5 is not null)
where fecha in (select top 10 fecha from resultados order by fecha desc) group by numero order by 2 desc;

Pero el problema que no los orderna bien por grupo de los que salen más veces, quiero los números ordernados de mayor a menor

¿Querés los números ordenados de menor a mayor? O sea, ¿una secuencia de 1 a por en los números sorteados y no ordenados por las veces que salió?

En ese caso cambias el orden, probá cambiar así: order by Numero ASC;

1 a x quise decir, el corrector me lo cambio.😄

¡Gracias!, Otra pregunta como podría sacar las parejas de números que más salen, y el número de sorteo que llevan sin salir, ejemplo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas