Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-07-2007
NSL94 NSL94 is offline
Miembro
 
Registrado: abr 2007
Posts: 43
Poder: 0
NSL94 Va por buen camino
Max sobre resultado de un Sum, agrupar por fraccion de fecha.

HOLA,
Quisiera saber si alguien sabria como hacer un Max() sobre el resultado de un Sum().
Y si a alguien se le ocurre como agrupar por mes a partir de una fecha entera sin usar el report Exctract(month from fecha).

Si teneis alguna idea por favor hacedmelo saber llevo 1 semana sin poder resolver una "miserable" busquedad sql xDDD
GRACIAS!
saludos a todos.
Responder Con Cita
  #2  
Antiguo 09-07-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
¿Cual es el motor de base de datos que usas?.

En firebird, por ejemplo, funcionaría algo así en el primer caso:
Código SQL [-]
  select max(suma) from (select sum(campo) as suma from tabla group by otrocampo)

en el segundo caso:
Código SQL [-]
  select sum(campo) from tabla group by extract(month from fecha)

En algunos motores (bde por ejemplo) no funcionaría, ya que no permite expresiones en el group by.
Responder Con Cita
  #3  
Antiguo 09-07-2007
NSL94 NSL94 is offline
Miembro
 
Registrado: abr 2007
Posts: 43
Poder: 0
NSL94 Va por buen camino
Hola basti,
Creo que es un paradox puede ser? al menos eso pone en el bde administrador de windows.

Y por lo que creo no me deja ni poner condiciones en el group by ni tampoco una select en el from -_-' mira te dejo pegado el anuncio anterior que puse donde detallo mucho mas el problema y como lo suelo resolver:

"SELECT
PED.VENDEDOR, PER.NOMBRE, PEC.PRODUCTO, PRO.NOMBRE,
SUM(PEC.CANTIDAD) AS C_ENERO
FROM
"BFACTU2:PED_EMI.DB" AS PED,
"BFACTU2:PED_CONC.DB" AS PEC,
"BFICHEROS:PERSONAS.DB" AS PER,
"BFICHEROS:PRODUCTO.DB" AS PRO
WHERE
PRO.CODIGO = PEC.PRODUCTO AND
(PRO.PRESENTE = 'S' OR PRO.PRESENTE ='s') AND
(PEC.PRESENTE = 'S' OR PEC.PRESENTE ='s') AND
PED.N_PED = PEC.N_PED AND
PER.ID_PER=PED.VENDEDOR AND
EXTRACT (MONTH FROM PED.FECHA) = 1
GROUP BY
PED.VENDEDOR, PER.NOMBRE, PEC.PRODUCTO, PRO.NOMBRE



que basicamente de momento me suma la cantidad de producto por producto y comercial de pedidos del mes de enero.
quisiera:

1-sacar solamente la cantidad maxima de las sumas por cada comercial.
es decir si cada comercial tiene 10 productos que unicamente me saque el producto y la cantidad sumada de este producto.
2-saber si hay alguna manera de poder agrupar por extract(month from fecha) para poder asi agrupar por fecha.

cuando tengo que agrupar por fracciones de fecha(año, mes) lo que suelo hacer es un listado como en este caso sin el sum con el extract(month from fecha) as mes de campo+idem as año, para poder luego en el report agrupar por mes y asi sumar las cantidades dentro de este grupo. Lo que me permite hacer estructuras de sumas de campo por año-comerciales-mes.
Pero en este caso al tener que sacar el max de las sum no tengo ni idea de como hacerlo, ya que no se me ocure como hacer ambas cosas con la sql ni con el report.
A malas para sacar los resultados de cada mes (es decir sin agrupar por extract) puedo hacer 12 consultas de estas para cada mes y usar unions... pero 1 no me soluciona el problema del max de sum y 2... un dia me dijeron que un buen informatico debia ser vago escribiendo y agil d emente xDD"

en fin, espero que te ubiques un pokito mas -_-' pq yo estoy bastante perdido xDDD

En resumen si solo tuviese una de las 2 condiciones podria:
-o bien sacar el listado con el sum (quitando condicion del extract) y luego solo sacar el max, pero entonces no me resolveria el tema de la agrupacion por fechas (ya que no puedo agrupar por una condicion)
-o bien sacar este listado sin sumar con lo cual sacaria un campo extract de la fecha y agruparia a posteriori en el report por el campo "extraido" para sumar, pero claro entonces no me resolveria el problema de solo sacar el max.

Última edición por NSL94 fecha: 09-07-2007 a las 10:44:16.
Responder Con Cita
  #4  
Antiguo 10-07-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Acabo de probar las opciones que te di con BDE y Paradox para asegurarme de que, como sospechaba, no funciona.

Según el tipo de reportes que uses, algunos te permiten agrupar por el mes de la fecha y hacer las sumas.

Como última opción podrías crear una tabla temporal con los datos que te hacen falta para el informe.
Responder Con Cita
  #5  
Antiguo 10-07-2007
NSL94 NSL94 is offline
Miembro
 
Registrado: abr 2007
Posts: 43
Poder: 0
NSL94 Va por buen camino
Hola de nuevo Basti...
Erf el entorno en el que me hacen programar es del año de la quica xDD
amos mucho es pedirle al report que agrupe por fecha sin que se cuelguen los grupos... sisi tengo que resetearlos a cada consulta (casi). no hagas preguntas, los que diseñaron esto son unos "cracks" -_-¡
En fin, me interesa mucho esto de crear la tabla temporal, podrias mandarme un link a algun tutorial, o algo parecido para investigarlo, esque nunca lo he echo, y no tengo ni idea de como se podria hacer.
Aunque por lo que me dicen con paradox no voy a poder hacer esta consulta -_-¡ y si... el "crack" de mi jefe es de estos que es tan "crack" que se permite pegarle a la mesa vociferando xDDD y no es capaz de aceptar que su infraestructura esta MUY limitada... pero weno ^^
en fin muchas gracias por tu tiempo Basti!
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
Agrupar por la fecha de un campo datetime Javi2 SQL 4 21-08-2010 02:33:43
MAX(SUM(campo)) ??? y agrupar por un extract(month from fecha) NSL94 SQL 0 05-07-2007 15:29:21
Agrupar campos en ClientDataSet y recorrer el resultado David Conexión con bases de datos 3 20-06-2007 11:13:11
Como simplificar y obtener el resultado en una fracción manuelalejandro Varios 3 10-12-2006 02:51:04
Sobre cierto resultado de la función SHGetSpecialFolderPath dec API de Windows 3 01-06-2005 06:59:01


La franja horaria es GMT +2. Ahora son las 18:57:45.


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