** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - consulta de SELECT TOP
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoconsulta de SELECT TOP

 Responder Responder
Autor
Mensaje
cpampasPT Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 20/Marzo/2010
Localización: Portugal
Estado: Sin conexión
Puntos: 537
Enlace directo a este mensaje Tema: consulta de SELECT TOP
    Enviado: 26/Diciembre/2019 a las 10:05
Hola a Todos y Felices Fiestas,

Llevo intentando hace algun tiempo  crear una consulta que me liste la media  los 2  registros con valor mas alto agrupados por nombre, o sea :

mi tabla tiene los siguientes datos :

jogoPla Plaganha
Brescia - Lazio 6
Brescia - Lazio 6
Brescia - Lazio 5.95
Brescia - Lazio 5.89
Brescia - Lazio 5.8
Brescia - Lazio 5.8
Brescia - Lazio 5.75
Brescia - Lazio 5.75
Brescia - Lazio 5.6
Brescia - Lazio 5.55
Brescia - Lazio 5.5
Brescia - Lazio 5.45

Lo que pretendo es hacer la media de 6 con 5.95, que son los 2 de valor mas alto, agrupados por el campor jogoPla

intente asi :

SELECT tblPlacardTodosAvg.jogoPla, tblPlacardTodosAvg.Plaganha
FROM tblPlacardTodosAvg
WHERE (((tblPlacardTodosAvg.Plaganha) In (SELECT TOP 5 percent Plaganha 
    FROM tblPlacardTodosAvg 
    ORDER BY Plaganha DESC
)))
GROUP BY tblPlacardTodosAvg.jogoPla, tblPlacardTodosAvg.Plaganha
ORDER BY tblPlacardTodosAvg.Plaganha DESC;

pero no consigo los 2 de superior, por lo que creo deberia usar SELECT TOP 2 pero no consigo el resultado deseado
Alguna idea ?

Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1536
Enlace directo a este mensaje Enviado: 26/Diciembre/2019 a las 19:36
A ver si algo así sirve:

1. Una consulta con los valores distintos de Plaganha
2. Una consulta que devuelva los 2 valores mayores de la consulta 1
3. Una consulta con la tabla y la consulta del paso 2, relacionadas por los 2 campos, y que sea de totales para que calcule la media
Arriba
cpampasPT Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 20/Marzo/2010
Localización: Portugal
Estado: Sin conexión
Puntos: 537
Enlace directo a este mensaje Enviado: 27/Diciembre/2019 a las 09:51
Gracias pitxiku

Con tu sugerencia ya avance bastante , asi que ahora ya consigo el resultado de los dos valores mas altos en la tabla, asi :

SELECT main.jogopla, main.plaganha
FROM (SELECT t.jogopla, t.plaganha, (SELECT Count(*) FROM tblPlacardTodosAvg sub
WHERE sub.plaganha >= t.plaganha   AND sub.jogopla = t.jogopla) AS grupo FROM tblPlacardTodosAvg AS t)  AS main
WHERE (((main.jogopla)="Brescia - Lazio") AND ((main.grupo)<=2))
ORDER BY main.jogopla, main.plaganha DESC;

el resultado es :

jogopla plaganha
Brescia - Lazio 6.50
Brescia - Lazio 6.25

ahora con una segunda consulta de agrupacion de la anterior consigo la media de 6.50 con 6.25

Pero me pregunto, sera posible hacerlo todo en la consulta que pongo antes ?, y no recurrir a una segunda basada en la primera?  es que despues quiero  construir una string con la sintaxis de la consulta para poder utilizarla en mi codigo VBA

Arriba
cpampasPT Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 20/Marzo/2010
Localización: Portugal
Estado: Sin conexión
Puntos: 537
Enlace directo a este mensaje Enviado: 27/Diciembre/2019 a las 17:12
Al final opto por una segunda consulta basada en la primera para conseguir lo pretendido
En todo caso ya no se si debo hacer esto y la razon es que el sistema se hace muy lento , ahora tardo mas de 1 minuto en cargar el formulario

Lo voy a averiguar algo mas, pero mientras, creo que podeis cerrar el hilo
Gracias
Arriba
cpampasPT Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 20/Marzo/2010
Localización: Portugal
Estado: Sin conexión
Puntos: 537
Enlace directo a este mensaje Enviado: 29/Diciembre/2019 a las 09:38
Gracias y podeis cerrar el hilo
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable