Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Problema con Max(lectura)

Estas en el tema de Problema con Max(lectura) en el foro de Oracle en Foros del Web. Hola a todos, tengo muchos registros, quiero tomar de cada uno la lectura mayor tomada cada mes (la lectura puede estar repetida los últimos meses), ...
  #1 (permalink)  
Antiguo 03/05/2017, 07:20
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 9 meses
Puntos: 4
Mensaje Problema con Max(lectura)

Hola a todos,

tengo muchos registros, quiero tomar de cada uno la lectura mayor tomada cada mes (la lectura puede estar repetida los últimos meses), sin embargo pongo esta consulta:
Código MySQL:
Ver original
  1. Select codigo,max(lectura)  from registro_lecturas where indentificacion in (123,456,765,345) GROUP BY codigo

pero no me funciona, me lista por cada código todas las lecturas, es como si no tomara el max.
  #2 (permalink)  
Antiguo 03/05/2017, 09:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema con Max(lectura)

Cita:
lectura mayor tomada cada mes
Si esto es lo que estás buscando, entonces tienes que agrupar por el mes, no por el código... O en todo caso debes agrupar por MES Y CODIGO. Eso, si en cada mes se repiten los mismos códigos con diferentes lecturas.
Ahora bien, ¿cual es el campo que indica la fecha de la lectura?

Ten en cuenta que sin entender como es la estructura de la tabla y el uso de los campos, es dificil saber como tienes que escribir la consulta... Es tabla es tuya, no nuestra.
Muestra el CREATE TABLE de la tabla y explica el uso de cada columna y veremos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/05/2017, 12:11
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 9 meses
Puntos: 4
Respuesta: Problema con Max(lectura)

gnzsoloyo, exacto , vos tenes razón, voy a probar con el tema de la fecha (mes ) y comparto resultados.. Gracias
  #4 (permalink)  
Antiguo 03/05/2017, 14:31
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 9 meses
Puntos: 4
Respuesta: Problema con Max(lectura)

no me da, realice la instruccion que me compartiste, la fecha esta en este formato 09/25/2014 00:00:00
Código SQL:
Ver original
  1. SELECT codigo,MAX(fecha),lectura  FROM registro_lecturas WHERE codigo IN (123,456,765,345) GROUP BY fecha, codigo

Porque a decir verdad me sirviria inclusive tomar la lectura de la fecha más reciente, no adjunto el create table porque los nombres de los campos no son muy claros para alguien externo.
  #5 (permalink)  
Antiguo 04/05/2017, 06:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema con Max(lectura)

No lo estás mirando correctamente...
Yo te dije que AGRUPES por fecha, y NO que buscases la fecha mayor, cuando en realidad lo que quieres es la LECTURA MAYOR...

Ahora bien, si lo que quieres es la última lectura, y de estas la mayor, tampoco es correcta la query.çEsto estaría mas cerca.

Código SQL:
Ver original
  1. SELECT codigo, TRUNC(fecha) fecha, MAX(lectura) Lectura
  2. FROM registro_lecturas
  3. WHERE codigo IN (123, 456, 765, 345)
  4. GROUP BY TRUNC(fecha), codigo

En cuanto al formato de la fecha, eso es una configuracion del servidor, pero si lo que quieres es que la salida en formulario sea en formato español, simplemente formatea la salida.
Para hacerlo desde Oracle sería:

Código SQL:
Ver original
  1. SELECT codigo, TO_CHAR(fecha, 'dd/mm/yyyy') fecha, lectura
  2. FROM (
  3.     SELECT codigo, TRUNC(fecha) fecha, MAX(lectura) Lectura
  4.     FROM registro_lecturas
  5.     WHERE codigo IN (123, 456, 765, 345)
  6.     GROUP BY TRUNC(fecha), codigo) tablaresultado

Cita:
no adjunto el create table porque los nombres de los campos no son muy claros para alguien externo
precisamente por eso dije:

Cita:
Muestra el CREATE TABLE de la tabla y explica el uso de cada columna y veremos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 04/05/2017 a las 06:42

Etiquetas: max, maximo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:39.