Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2014
Roger1978 Roger1978 is offline
Registrado
NULL
 
Registrado: mar 2014
Posts: 3
Poder: 0
Roger1978 Va por buen camino
Ayuda con consulta por mes

Saludos, Me dirijo a Uds en esta oportunidad a ver si me alludan en esta consulta que no me arroja los resultados esperados.

Estoy manejando informacion probeniente de un router y quiero mostrar el consumo de los usuarios.
Dicho router maneja un campo BytesIn el cual siempre va incrementando y este campo lo estoy guardando en una tabla de la siguiente manera:

Código:
CREATE TABLE CONSUMO (
    COD      INTEGER NOT NULL,
    NOMBRE   VARCHAR(20),
    BYTESIN  INTEGER,
    FECHA    DATE
);

COD    NOMBRE    BYTESIN      FECHA
3    roger    20    09/03/2014
4    roger    30    10/03/2014
5    Pedro    100    10/03/2014
6    roger    10    11/02/2014
7    roger    40    10/03/2014
8    roger    50    11/04/2014
Hasta ai todo bien, el problema que tengo es para yo hacer la consulta por mes de determinado usuario,

Por Ejemplo para el usuario roger quisiera el siguiente resultado
Código:
NOMBRE    MES    ANIO    MAXIMO    TOTAL
roger    2    2014    10    10
roger    3    2014    40    30
roger    4    2014    50    10
Con la siguiente consulta me devuelve esto:
Código:
Select
NOMBRE,
extract(MONTH from fecha) As Mes,
EXTRACT(YEAR FROM FECHA) As Anio,
Max(BYTESIN)As Maximo,
(Sum(BytesIn)-Max(BYTESIN)) as Total

from consumo
Where Nombre='roger'
group by Nombre,extract(MONTH from fecha),EXTRACT(YEAR FROM FECHA)
Me devuelve esto:
Código:
NOMBRE    MES    ANIO    MAXIMO    TOTAL
roger    2    2014    10    0
roger    3    2014    40    50
roger    4    2014    50    0
y el resultado que quiero es 10 en febrero, 30 en marzo y 10 en abril

a simple vista veo que deberia restarse el mes actual menos el mes anterior, pero no se como se haria.

cualquier ayuda es bienvenida, gracias
Responder Con Cita
  #2  
Antiguo 12-03-2014
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Podrías usar un procedimiento almacenado...

Te propongo esta alternativa:
Código SQL [-]
create or alter procedure Router (
    Usuario as Varchar(20)) 
returns(
  Nombre as varchar(20),
  Mes as integer,
  Anio as integer,
  Maximo as integer,
  Total as integer)
as
declare variable MaxAnterior integer;
begin
    MaxAnterior=0;
  FOR Select
    Nombre,
    Extract(Month from Fecha) As Mes,
    Extract(Year From Fecha) As Anio,
    Max(BytesIn) As Maximo
  From Consumo
  Where Nombre=:Usuario
    Group By Nombre, Extract(Month From Fecha), Extract(Year From Fecha)
  Into :Nombre, :Mes, :Anio, :Maximo
  do
  begin
       Total=Maximo - MaxAnterior;
     MaxAnterior=Maximo;
     
       suspend; 
  end
end

Este procedimiento recibe un parametro que es Usuario

Para usar este puedes hacerlo desde una consulta de la siguiente manera:

Código SQL [-]
Select * From Router('roger')

No lo he probado, así que es posible que tenga errores. Me cuentas como va...

Saludos cordiales
Responder Con Cita
  #3  
Antiguo 12-03-2014
Roger1978 Roger1978 is offline
Registrado
NULL
 
Registrado: mar 2014
Posts: 3
Poder: 0
Roger1978 Va por buen camino
perfecto me funsiono bien.. gracias cloayza
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda con consulta SQL cmfab Varios 24 11-04-2012 17:16:11
ayuda con consulta con ado y SQL frholguin SQL 11 23-04-2010 23:13:43
Ayuda con una consulta Nomack SQL 8 03-09-2005 21:24:37
Ayuda con una consulta SQL agova SQL 13 29-08-2005 17:06:15
Ayuda con una consulta sql marcelofabiani SQL 4 27-07-2003 23:30:13


La franja horaria es GMT +2. Ahora son las 02:13:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi