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

consulta con sumas y count

Estas en el tema de consulta con sumas y count en el foro de SQL Server en Foros del Web. tengo una tabla con operaciones y kiero ke me muestre el numero de operaciones de cada dia del mes y la suma de los campos ...
  #1 (permalink)  
Antiguo 28/11/2005, 14:34
ReS
 
Fecha de Ingreso: febrero-2005
Mensajes: 21
Antigüedad: 19 años, 2 meses
Puntos: 0
consulta con sumas y count

tengo una tabla con operaciones y kiero ke me muestre el numero de operaciones de cada dia del mes y la suma de los campos monto, la tabla tiene estos campos:

fecha
num_operacion
monto
interes

lo ke kiero ke me lo agrupe por cada dia del mes y me muestre el numero de operaciones y la suma de montos de cada dia, ej:

1 de agosto - 5(n° de operaciones) - sumamonto - sumainteres
2 de agosto - 4 - sumamonto - sumainteres

....

y asi

necesito la consulta por favor
  #2 (permalink)  
Antiguo 28/11/2005, 15:11
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Espero te sirva...

Código:
Select
	 fecha
	,count (num_operacion) as NumOperaciones
	,sum (monto)           as SumaMonto
	,sum (intereses)       as SumaIntereses
From
	MiTabla
Group By 
	fecha
  #3 (permalink)  
Antiguo 28/11/2005, 15:25
ReS
 
Fecha de Ingreso: febrero-2005
Mensajes: 21
Antigüedad: 19 años, 2 meses
Puntos: 0
Gracias, mi consulta ha kedado asi:

Código:
SELECT operaciones.fecha, COUNT(num_operacion), SUM(monto), 
    SUM(interes)
FROM operaciones
WHERE operaciones.fecha BETWEEN '01-11-2005' AND 
    '30-11-2005'
GROUP BY fecha
ORDER BY fecha
ahora bien mi tabla tiene un campo estado ke puede tener el valor 'NULO' o 'NO-NULO', como hago para agregar un count k me diga cuantas operaciones son nulas por dia?

Última edición por ReS; 28/11/2005 a las 15:30
  #4 (permalink)  
Antiguo 28/11/2005, 15:49
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Código:
SELECT 
	 fecha
	,COUNT(num_operacion) 
	,SUM(monto)
	,SUM(interes)
	,SUM ( CASE estado When 'NULO'    Then 1 Else 0 End ) As OperacionesNulas
	,SUM ( CASE estado When 'NO-NULO' Then 1 Else 0 End ) As OperacionesNoNulas
FROM 
	operaciones
WHERE 
	fecha BETWEEN '01-11-2005' AND '30-11-2005'
GROUP BY 
	fecha
ORDER BY 
	fecha
  #5 (permalink)  
Antiguo 29/11/2005, 15:22
ReS
 
Fecha de Ingreso: febrero-2005
Mensajes: 21
Antigüedad: 19 años, 2 meses
Puntos: 0
Muchas gracias , me ha servido todo
  #6 (permalink)  
Antiguo 30/11/2005, 12:46
ReS
 
Fecha de Ingreso: febrero-2005
Mensajes: 21
Antigüedad: 19 años, 2 meses
Puntos: 0
me gusto mucho esta forma de restringir:

Código:
SUM ( CASE campo When valor Then 1 Else 0 End ) As OperacionesNulas
como la haria para el caso ke kisiera sumar el campo Monto solo en los casos k el campo Estado sea diferente de 'NULO'?

  #7 (permalink)  
Antiguo 30/11/2005, 14:15
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
SUM ( CASE estado When 'NULO' Then 0 Else 1 End ) As OpsDifNulo

  #8 (permalink)  
Antiguo 30/11/2005, 15:37
ReS
 
Fecha de Ingreso: febrero-2005
Mensajes: 21
Antigüedad: 19 años, 2 meses
Puntos: 0
Cita:
Iniciado por Andres95
SUM ( CASE estado When 'NULO' Then 0 Else 1 End ) As OpsDifNulo

pero kiero sumar el campo Monto, en los registros en k el campo estado tenga el valor 'NULO', en lo k puiste no veo k involucres el campo Monto
  #9 (permalink)  
Antiguo 30/11/2005, 15:38
ReS
 
Fecha de Ingreso: febrero-2005
Mensajes: 21
Antigüedad: 19 años, 2 meses
Puntos: 0
Cita:
Iniciado por Andres95
SUM ( CASE estado When 'NULO' Then 0 Else 1 End ) As OpsDifNulo

pero kiero sumar el campo Monto, en los registros en k el campo estado tenga el valor 'NULO', en lo k puiste no veo k involucres el campo Monto
  #10 (permalink)  
Antiguo 30/11/2005, 15:53
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
La razon es porque asumi que seria algo similar a las consultas anteriores.


Esta es bastante sencilla....


Código:
SELECT
	SUM(MONTO) 
FROM 
	operaciones
WHERE
	Estado <> 'NULO'
Te anexo liga, espero te sea util
Manual SQL
  #11 (permalink)  
Antiguo 30/11/2005, 16:25
ReS
 
Fecha de Ingreso: febrero-2005
Mensajes: 21
Antigüedad: 19 años, 2 meses
Puntos: 0
Cita:
Iniciado por Andres95
La razon es porque asumi que seria algo similar a las consultas anteriores.


Esta es bastante sencilla....


Código:
SELECT
	SUM(MONTO) 
FROM 
	operaciones
WHERE
	Estado <> 'NULO'
Te anexo liga, espero te sea util
Manual SQL
si, esa consulta es bastante sencilla, pero veo me explike mal, ya k mi duda kiero anexarla a la consulta ke ya teniamos, osea a esta:

Código:
SELECT 
	 fecha
	,COUNT(num_operacion) 
	,SUM(monto)
	,SUM(interes)
	,SUM ( CASE estado When 'NULO'    Then 1 Else 0 End ) As OperacionesNulas
	,SUM ( CASE estado When 'NO-NULO' Then 1 Else 0 End ) As OperacionesNoNulas
FROM 
	operaciones
WHERE 
	fecha BETWEEN '01-11-2005' AND '30-11-2005'
GROUP BY 
	fecha
ORDER BY 
	fecha
en lugar del SUM(monto), kiero k restrinja la suma del campo monto donde el campo estado = 'nulo' ya k no me sirve restrinjirlo en WHERE

pd: gracias por el manual
  #12 (permalink)  
Antiguo 01/12/2005, 13:31
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Bueno ya me revolvi, de cualquier forma incluyo las dos opciones.... suma de monto cuando es nulo y cuando es diferente.

un saludo

Código:
SELECT 
	 fecha
	,COUNT(num_operacion) 
	,SUM(monto)
	,SUM(interes)
	,SUM ( CASE estado When 'NULO'    Then 1 Else 0 End ) As OperacionesNulas
	,SUM ( CASE estado When 'NO-NULO' Then 1 Else 0 End ) As OperacionesNoNulas
	,SUM ( CASE estado When 'NULO'    Then Monto Else 0 End ) As SumaOpsNulas
	,SUM ( CASE estado When 'NULO'    Then 0     Else Monto End ) As SumaOpsDifDeNulo
FROM 
	operaciones
WHERE 
	fecha BETWEEN '01-11-2005' AND '30-11-2005'
GROUP BY 
	fecha
ORDER BY 
	fecha
  #13 (permalink)  
Antiguo 01/12/2005, 15:25
ReS
 
Fecha de Ingreso: febrero-2005
Mensajes: 21
Antigüedad: 19 años, 2 meses
Puntos: 0
gracias Andres por darte el tiempo de responderme, mi consulta quedo finalmente asi:

Código:
SELECT fecha, 
    SUM(CASE num_magico WHEN 1 THEN 1 ELSE 0 END), 
    SUM(CASE estado WHEN 'NULA' THEN 0 ELSE Monto END), 
    SUM(CASE estado WHEN 'NULA' THEN 0 ELSE Interes END), 
    SUM(CASE estado WHEN 'NULA' THEN 1 ELSE 0 END) 
    AS OperacionesNulas, 
    SUM(CASE estado WHEN 'CARTERA' THEN 1 ELSE 0 END) 
    AS OperacionesNoNulas
FROM operaciones
WHERE fecha BETWEEN '01-10-2005' AND '30-10-2005'
GROUP BY fecha
ORDER BY fecha
  #14 (permalink)  
Antiguo 07/12/2005, 10:28
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 4 meses
Puntos: 0
oye yo tengo el mismo caso pero en lugar de la condicion de texto son numeros umm mi condicion quedaria algo asi pero no la puedo ejecutar
SUM (CASE inv_dispa When <> '0' Then 1 Else 0 End ) As [claves cero]

quiero que la condicion sea diferente de cero
  #15 (permalink)  
Antiguo 07/12/2005, 15:54
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
si el campo inv_dispa es numerico, deberia ser :

Eso obtiene la cuenta de los registros cuando inv_dispa es diferente de cero.

SUM (CASE inv_dispa When 0 Then 0 Else 1 End ) As [claves cero]

---si solo requieres la cuenta de estos registros la sentencia se simplificara mucho...

Select count (*) where inv_dispa <> 0
  #16 (permalink)  
Antiguo 08/12/2005, 11:01
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 4 meses
Puntos: 0
un poquito mas complicado

hola gracias por tu respuesta me ayudo bastante pero tengo otro problema quiero sacar el porcentaje que representan las claves en cero y no se como me podrias ayudar
es decir algo asi.

sum(case inv_dispa when '0' then 1 else 0 end)/ sum(CASE inv_dispa When '0' Then 0 Else 1 End) + SUM (CASE inv_dispa When '0' Then 1 Else 0 End ) * 100


pero me manda un error en la consulta y no se como realizarlo.


ejemplo tengo una tabla con 10 registros el campo se llama in_dispa el total de registros hace el 100 % y tengo 3 registro con valor cero quiero saber cuanto me representa en porcentaje
  #17 (permalink)  
Antiguo 15/12/2005, 03:01
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Sería más sencilla, no debes complicarla tanto, no es necesario, quedaría algo asi

SELECT (sum(case inv_dispa when 0 then 1 else 0 end)/ Count(1))* 100
FROM TuTabla

Como te dijo Andres95 si es numérico no necesitas poner las comillas en el CASE

Saludos
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 06:49.