SQL - Maximos

 
Vista:
sin imagen de perfil
Val: 19
Ha disminuido 1 puesto en SQL (en relación al último mes)
Gráfica de SQL

Maximos

Publicado por Pablo (7 intervenciones) el 10/03/2020 04:36:50
Gente !, como andan ?
Seré breve, tengo la tabla Service con los campos :

Fecha, TipoService, Monto, ProxServiceKms, ProxServiceFecha, Patente, Taller, Factura,
ProxServiceFecha indica el proximo service en fecha, y ProxServiceKms el proximo service en kms, porque
le puede tocar el primero que cumpla, por eso se ponen las 2 alternativas.

Yo quiero de mi tabla obtener : Patente, MAX ( ProxServiceFecha), MAX (ProxServiceKms), lo que seria
la patente del vehiculo con el km y fecha maxima, porque pueden haber registros mas bajos.

Yo hago : Select Max(ProxServiceKms), Patente
From Service
Group by Patente
Order by Patente ;

Hasta ahi va joya, pero si en el Select y en el group agrego ProxServiceFecha, me duplica los resultados, osea
que me pone 2 veces el maximo de cada vehiculo.

Alguien que me pueda ayudar ! Muchas graciasssssssssss
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 76
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Maximos

Publicado por joel (23 intervenciones) el 10/03/2020 08:35:20
Hola Pablo, no puedes poner los dos campos en el group by, porque luego te lo agrupara por los que los dos sea igual, y como no se da, por eso te los duplica.

La solución que se me ocurre, es hacer dos selects y juntarlos... algo así:

Esto funcionara en MySQL... no se que motor de base de datos estas utilizando.

1
2
3
4
5
6
7
8
9
Select Max(ProxServiceKms), Patente
From Service
Group by Patente
Order by Patente
UNION
Select Max(ProxServiceFecha)
From Service
Group by Patente
Order by Patente

No se si esto soluciona tu problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 19
Ha disminuido 1 puesto en SQL (en relación al último mes)
Gráfica de SQL

Maximos

Publicado por Pablo (7 intervenciones) el 10/03/2020 22:58:50
Joel muchas gracias por la ayuda, lo intente ejecutar pero me tira "La orden proporcionada no es una instrucción SELECT.
Solo se permiten consultas."
Yo trabajo con LibreOffice Base, dado que es lo que utilizamos en el trabajo.

Viendo un poco la union de los Select me arrojaria esto :
ProxServKms Patente
23423 xxx111
34523 xxx333
12/03/20 xxx111
23/07/20 xxx333

Osea que me tiraria los resultados asi, yo queria saber como tirar todo en una fila unica de este modo:
Patente ProxServKms ProxServFecha
xxx111 23423 12/03/20
xxx333 34523 23/07/20

Sigo intentando pero me trabé mal ! :/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 76
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Maximos

Publicado por joel (23 intervenciones) el 12/03/2020 08:30:55
La verdad es que nunca he utilizado libreOffice Base... utilizamos libreOffice para la hoja de calculo y writer, pero no para base de datos.
Yo no se si permite el uso de UNION... es el comando que creo que te ponga el resultado en horizontal!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 19
Ha disminuido 1 puesto en SQL (en relación al último mes)
Gráfica de SQL

Maximos

Publicado por Pablo (7 intervenciones) el 11/03/2020 22:55:24
Buenas !, Se me ocurrió hacer esta consulta, la había encaminado y anda, pero me tira mal el resultado, osea, si por ejemplo 3 vehículos tienen 3 service realizados, me tira los 3 service de cada uno en vez de tirar solo el que mas alto tiene los Kms.
Con la subconsulta obtengo los kms maximos, luego el select principal deberia arrojar solo lo que coincide, no entiendo porque me tira
esos resultados. :/


1
2
3
4
SELECT *
FROM "Services"
WHERE "ProxServKms" IN ( SELECT MAX( "s"."ProxServKms" ) FROM "Services" "s" GROUP BY "s"."Patente" )
ORDER BY "Patente"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 19
Ha disminuido 1 puesto en SQL (en relación al último mes)
Gráfica de SQL

Maximos

Publicado por Pablo (7 intervenciones) el 11/03/2020 23:59:30
Parezco un loco autocontestandome ! jajajajajajj, pero me quedo intentando resolver y bueno,...
Ese código me parecía que tenía toda la lógica para que funcione, y efectivamente así fue, lo probé en Access y anda perfecto, pero
la misma consulta en LibreOffice Base me tira esos valores que estan de mas.
No se porque ocurre eso, si alguno sabe, joya !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 19
Ha disminuido 1 puesto en SQL (en relación al último mes)
Gráfica de SQL

Maximos

Publicado por Pablo (7 intervenciones) el 12/03/2020 04:12:42
Parecia que tenia logica :(, exporte la tabla que usaba en libreoffice a access y me da la misma falla :(, había hecho una prueba con un par de datos nomas, y al probar con la misma tabla no me anda :/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar