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 26-03-2010
Jucho69 Jucho69 is offline
Miembro
 
Registrado: ene 2007
Ubicación: Ciudad Habana, Cuba
Posts: 118
Poder: 18
Jucho69 Va por buen camino
Red face Problemas con subtotales

Hola al Foro

Tengo la siguiente dificultad no logro establecer los subtotales de esta tabla en Access.

Cliente-------------Importe
Cubatur--------------$163
Cubatur--------------$512
Rosello---------------$290
Rosello---------------$419
Rosello---------------$177
Sime-----------------$432
Sime-----------------$178

Y necesito lograr

Cliente-------------Importe
Cubatur--------------$163
Cubatur--------------$512
---------------------$675
Rosello---------------$290
Rosello---------------$419
Rosello---------------$177
---------------------$886
Sime-----------------$432
Sime-----------------$178
---------------------$610

Algo así en una sola consulta, he tratado de hacerlo con la propia codificación SQL de la tabla o desde Delphi pero ni modo, solo me sale un subtotal, yo cojí esta tabla de pruebas para que sea facil su compresión.

Saludos
Responder Con Cita
  #2  
Antiguo 26-03-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola jucho 69, a mi se me ocurre hacerlo con 2 consultas y despues unirlas:

Código SQL [-]
Select Cliente, Importe From Tabla
Union
Select Cliente, sum(Importe) as Importe From Tabla Group By Cliente
Order By 1,2

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 26-03-2010 a las 16:00:46.
Responder Con Cita
  #3  
Antiguo 26-03-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ojalá yo manejara el sql como tú, Caro
Responder Con Cita
  #4  
Antiguo 26-03-2010
Jucho69 Jucho69 is offline
Miembro
 
Registrado: ene 2007
Ubicación: Ciudad Habana, Cuba
Posts: 118
Poder: 18
Jucho69 Va por buen camino
Hola Caro

!Que bien!, no se me hubiera ocurrido, gracias por tu ayuda, si alguno de ustedes me pudieras recomendar algún post o buen manual sobre SQL y consultas relacionales, sería de mucha ayuda.

Saludos
Responder Con Cita
  #5  
Antiguo 26-03-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Ojalá yo manejara el sql como tú, Caro
Hola amiguito, la verdad nose si mi nivel de sql sea bueno, hasta hace un año y medio no podía hacer cosultas complicadas, pero gracias a algunos hilos que respondio nuestro amigo poliburro (3 hilos, los que pude ver y estudiarlos). Ahora cada ves que sale una pregunta en sql, me pruebo para ver si mi cabecita puede resolver esa consulta .

Cita:
Empezado por Jucho69 Ver Mensaje
!Que bien!, no se me hubiera ocurrido, gracias por tu ayuda, si alguno de ustedes me pudieras recomendar algún post o buen manual sobre SQL y consultas relacionales, sería de mucha ayuda.
Solo comentarte que el Order By tiene que ser por tus dos campos para que salga en el orden que quieres. Sobre un buen manuel no podría recomendarte ninguno porque de los que vi, la mayoría explica solo lo basico.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #6  
Antiguo 26-03-2010
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
también puedes añadir una columna de ordenamiento extra... solo para hacerlo más facil...

Código SQL [-]
Select 0 as ord, Cliente, Importe From Tabla
Union
Select 1 as ord, Cliente, sum(Importe) as Importe From Tabla Group By Cliente
Order By Cliente, ord
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #7  
Antiguo 26-03-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Definitivamente, voy a comprarme otro libro de sql, este que tengo es muy básico
Responder Con Cita
  #8  
Antiguo 26-03-2010
Jucho69 Jucho69 is offline
Miembro
 
Registrado: ene 2007
Ubicación: Ciudad Habana, Cuba
Posts: 118
Poder: 18
Jucho69 Va por buen camino
Hola movorack

Sí, la columna de ordenamiento es una opció más, gracias, es verdad lo que dice Carro que los manuales son muy básicos, buscaré por los demás Foros a ver que encuentro.


Hola Casimironotevi, si encuentro algo te lo envío a tu correo.

Un Saludo
Responder Con Cita
  #9  
Antiguo 26-03-2010
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Hola a todos,
el tipo de consultas que propone Caro creo que no aparece en ningún manual. Sí aparece algo en la ayuda de Firebird , no recuerdo como lo llama ( tablas derivadas creo).
Ahora bien, estas consultas son TERRIBLEMENTE funcionales, y generalmente TERRIBLEMENTE inificientes en cuanto a velocidad de respuesta, ya que exprimen al motor de base de datos a tope ya que no son 'naturales'. Esto quiere decir que no se utilizan índices ni nada parecido ( generalmente ) y lo que hace el motor es generar una tabla temporal recorriendose las tablas que intervienen de cabo a rabo.
Para confirmarlo es conveniente mirar el plan de ejecución, y además es conveniente medir si es mejor ahorrarse un procedimiento almacenado que cuajar el servidor unos segundos. Sobre todo cuando nuestra base de datos tiene muchos registros.

Casimiro, tus aplicaciones de tropecientos gigas que sueles comentar funcionan estupendamente tanto tiempo y con esos volúmenes porque no conoces estas consultas enrevesadas.
Y que conste, que a mi me gustan , ya que como Caro, me reto a ver si se puede hacer en una sola consulta o no.

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #10  
Antiguo 26-03-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tienes razón, en parte, porque si el servidor es linux y tienes más de una cpu, cuando lanzas la consulta ocupa una de las cpu, pero las demás siguen libres para seguir antendiendo a los restantes usuarios.

He hecho una prueba con una pequeñita, poco más 500 Mb. y efectivamente el primer select lo recorre entero "natural", aunque de todas formas, el tiempo requerido ha sido 1 segundo.

Cita:
Prepare time: 00:00:00.
Field #01: .CLIENTE Alias:CLIENTE Type:INTEGER
Field #02: .TOTAL Alias:TOTAL Type: DOUBLE PRECISION
PLAN (TBCABECERASFACTURASVENTAS NATURAL)
PLAN (TBCABECERASFACTURASVENTAS ORDER INDCABFACVEN_CLIENTECODIGO)


Executing...
Done.
317488 fetches, 0 marks, 0 reads, 0 writes.
0 inserts, 0 updates, 0 deletes, 62675 index, 62631 seq.
Delta memory: 1184 bytes.
Execute time: 00:00:01.
Script execution finished.
Con otra tabla que tiene más registros (1279329), 2 segundos:
Cita:
Prepare time: 00:00:00.
Field #01: .CODIGOPEDIDO Alias:CODIGOPEDIDO Type:INTEGER
Field #02: .PRECIO Alias:PRECIO Type: DOUBLE PRECISION
PLAN (TBLINEASALBARANESVENTAS NATURAL)
PLAN (TBLINEASALBARANESVENTAS ORDER RDB$FOREIGN3)


Executing...
Done.
1279329 fetches, 0 marks, 10697 reads, 0 writes.
0 inserts, 0 updates, 0 deletes, 253736 index, 253720 seq.
Delta memory: 1192 bytes.
Execute time: 00:00:02.
Script execution finished.
La prueba la he hecho en mi ordenador personal, ubuntu 8.04 con firebird 2.1 y un AMD athlon 64 x2 dual 4600 con 2 Gb

Última edición por Casimiro Notevi fecha: 26-03-2010 a las 22:37:54.
Responder Con Cita
  #11  
Antiguo 26-03-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Solo comentar que la consulta correcta debería ser con una Union All ya que en realidad segun el requerimiento de Jucho69 es que por cada cliente salga cada importe efectuado más (+) la suma de todos los importe, lo cual significa que la cantidad de registro(tuplas)devueltas en la consulta general deben ser :
Cita:
Total registros=Cantidad de registro de la primera sub_consulta + Cantidad de registro de la segunda sub_consulta
Quedando la consulta SQL así:
Código SQL [-]
(Select Cliente, Importe From Tabla)   #<-Primera sub_consulta
Union All
(Select Cliente, sum(Importe) as Importe From Tabla Group By Cliente)    #<-Segunda sub_consulta
Order By Cliente,Importe
Quizás los parentesis estan demás pero creo que es mejor ponerlo para una mejor comprensión de lo que se está haciendo..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 29-03-2010 a las 20:54:37.
Responder Con Cita
  #12  
Antiguo 27-03-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
De esa forma ha sido más rápido incluso, de 2 segundos a 1 seg.
Cita:
Prepare time: 00:00:00.
Field #01: .CODIGOPEDIDO Alias:CODIGOPEDIDO Type:INTEGER
Field #02: .PRECIO Alias:PRECIO Type: DOUBLE PRECISION
PLAN (TBLINEASALBARANESVENTAS NATURAL)
PLAN (TBLINEASALBARANESVENTAS ORDER RDB$FOREIGN3)


Executing...
Done.
1279329 fetches, 0 marks, 10697 reads, 0 writes.
0 inserts, 0 updates, 0 deletes, 253736 index, 253720 seq.
Delta memory: 1192 bytes.
Execute time: 00:00:01.
Script execution finished.
Responder Con Cita
  #13  
Antiguo 29-03-2010
Jucho69 Jucho69 is offline
Miembro
 
Registrado: ene 2007
Ubicación: Ciudad Habana, Cuba
Posts: 118
Poder: 18
Jucho69 Va por buen camino
Smile

Hola

Gracias a todos por la ayuda, muy atento rgstuamigo, ya creo que contigo habia visto algo parecido, con Union All se pueden enlazar varias consultas previas incluso desde la propia base de datos.

Saludos
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
Subtotales de Excel adfa76 Servers 1 11-06-2007 17:05:24
subtotales en un grid federicorl OOP 4 10-12-2006 20:34:32
Subtotales al comienzo yusnerqui Varios 6 08-06-2006 16:02:20
Subtotales en Excel tutuk Servers 4 04-06-2005 00:56:58
Subtotales en QuickReport raugadel Impresión 3 12-05-2004 16:13:49


La franja horaria es GMT +2. Ahora son las 11:11:31.


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