Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

228
Visualizações
Consulta de lotería SQL

tengo una tabla simple de 7 columnas

 Week ¦ 1st ¦ 2nd ¦ 3rd ¦ 4th ¦ 5th ¦ 6th ¦

Cada semana, mi padre agrega los números de la lotería del Reino Unido de los sábados a un simple script PHP que creé. Tiene Alzheimer de inicio temprano y trata de mantener su cerebro activo. Esta noche me hizo una pregunta sobre la base de datos. Me preguntó si era posible ver los 6 números más populares.

Traté de crear una consulta SQL simple:

 SELECT 1st, 2nd, 3rd, 4th, 5th, 6th, COUNT(*) AS 'foo' FROM `dad` GROUP BY 1st, 2nd, 3rd, 4th, 5th, 6th ORDER BY foo DESC

Pero los resultados no fueron los que esperaba.

 1st 2nd 3rd 4th 5th 6th foo 2 6 8 32 33 35 1 3 6 12 17 35 40 1 3 6 31 43 46 53 1 etc

Lo que esperaba que sucediera sería que la tabla se fusionara en una sola columna, y luego contara y obtuviera un resultado simple, algo así como:

 Number Count 2 1 3 2 6 3 8 1

Y luego tal vez ponerlo en orden ascendente. Luego puedo usar esa consulta SQL para crear una tabla simple para que muestre los números más comunes.

Estoy pensando en hacer una consulta SQL general

 SELECT 1st FROM `dad`

Luego creando una matriz con los resultados, luego agregando

 SELECT 2nd FROM `dad`

Hasta el final de la matriz y continuando por las 6 columnas, luego usando PHP para contar los números individualmente.

¿Hay una manera más rápida?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Su primer esfuerzo debe ser arreglar su modelo de datos. Cada número debe almacenarse en una fila separada en lugar de en una columna, como:

 week pos num 1 1 6 1 2 8 1 3 32

Entonces su consulta sería una consulta agregada simple:

 select num, count(*) no_picks from dad group by num order by no_picks desc

Para la estructura de su tabla dada, necesitaría cambiar las columnas a filas. En MySQL, puedes usar union all para esto:

 select num, count(*) no_picks from ( select `1st` num from dad union all select `2nd` from dad union all select `3rd` from dad union all select `4th` from dad union all select `5th` from dad union all select `6th` from dad ) t group by num order by no_picks
over 4 years ago · Santiago Trujillo Relatório

0

Tu puedes hacer:

 select n, cnt from ( select n, count(*) as cnt from ( select `1st` as n from `dad` union all select `2nd` from `dad` union all select `3rd` from `dad` union all select `4th` from `dad` union all select `5th` from `dad` union all select `6th` from `dad` ) x group by n ) y order by cnt desc limit 6
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda