Re: Suma de Campos

From: Sergio Daniel Gomez <sergiogomez(at)tostado(dot)com(dot)ar>
To: Sergio Valdes Hurtado <svh(dot)pgsql(at)gmail(dot)com>
Cc: Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Suma de Campos
Date: 2010-04-15 23:26:30
Message-ID: 4BC7A0A6.1010808@tostado.com.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Sergio Daniel Gomez escribió:
> Sergio Valdes Hurtado escribió:
>> Estimados,
>> Tengo una tabla con la siguiente estructura:
>>
>> RBD int -- Es un identificador de
>> establecimientos educacionales
>> ano_pago int -- Año de pago
>> mes_pago int -- Mes de pago
>> monto int -- Monto pagado
>> tip_proc vachar(1) -- Identificador de Tipo de
>> Proceso y puede tener el valor "N" o "S"
>>
>> En el caso de que el Tipo de Proceso sea "S", sólo los meses de Marzo
>> a Diciembre tienen este tipo de pago, es decir no hay pagos "S" en los
>> meses de Enero y Febrero.
>>
>> Pues bien, me piden un informe que sume los pagos por año por tipo de
>> Proceso ("N" o "S") y para ello hice la siguiente consulta:
>>
>> SELECT rbd, sum(monto) FROM dbo.orden_pago
>> where ano_pago =2009
>> and tip_proc = "S"
>> group by rbd
>>
>> El problema es que ahora me dicen que para este total debo incluir los
>> meses de Enero y Febrero que tienen tipo de Pago "N" y sumarlo con lo
>> que se obtiene en la consulta anterior.
>>
>> Mi pregunta es si se podrá hacer en una sola consulta?, ya que este es
>> una base de datos heredada y sólo tenemos accesos de lectura y no
>> podemos hacer funciones ni tablas temporales
>>
>> Saludos cordiales a todos
>> --
>> TIP 2: puedes desuscribirte de todas las listas simultáneamente
>> (envía "unregister TuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)
>>
> Podría ser ?
>
> SELECT rbd, sum(monto) FROM dbo.orden_pago
> where ano_pago =2009
> and (tip_proc = "S"
> or (tip_proc = "N"
> and (mes_pago = "Enero"
> or mes_pago = "Febrero")
> )
> group by rbd
>
> --
> TIP 8: explain analyze es tu amigo
>

Ups! mes_pago es int, entonces
SELECT rbd, sum(monto) FROM dbo.orden_pago
where ano_pago =2009
and (tip_proc = "S"
or (tip_proc = "N"
and (mes_pago between 1 and 2)
)
group by rbd;

suponiendo que enero = 1, febrero = 2, etc.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Eduardo Lopez 2010-04-16 01:16:57 Re: Exponer procedimientos almacenados como web services
Previous Message mvillagomez 2010-04-15 23:19:39 Re: Suma de Campos