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 15-01-2009
jaimeh jaimeh is offline
Miembro
 
Registrado: mar 2007
Posts: 68
Poder: 18
jaimeh Va por buen camino
recuentos mediante sql o delphi

Hola a todos. Escribo este post para ver si hay alguien tan amable de poder orientarme. Estoy hecho un lio. Se lo agradecería enormemente.

Y no se si sería mejor hacerlo con comandos sql ó delphi

Tengo una tabla como por ejemplo la siguiente

dias tiempo
--------- --------
3/05/2008 00:13:00
5/05/2008 00:50:00
3/05/2008 00:25:00
5/05/2008 00:20:00


quiero que me salga algo como esto

dia <30 <60 Total
--- ---- ---- ------
3/05/2008 2 2
5/05/2008 1 1 2


Muchas gracias por dedicarme tiempo
Responder Con Cita
  #2  
Antiguo 15-01-2009
jaimeh jaimeh is offline
Miembro
 
Registrado: mar 2007
Posts: 68
Poder: 18
jaimeh Va por buen camino
No se si no se aprecian bien las tablas, voy a ponerlas otra vez

dias------------tiempo
----------------------

3/05/2008-----00:13:00
5/05/2008-----00:50:00
3/05/2008-----00:25:00
5/05/2008-----00:20:00


dias----------<00:30:00---------<00:60:00--------total
-------------------------------------------------------

3/05/2008--------2---------------------------------2
5/05/2008--------1------------------1--------------2

Muchas gracias a todos

PD. Los guiones los pongo para que no se descuadren las representación de las tablas
Responder Con Cita
  #3  
Antiguo 16-01-2009
Dark_RavenM Dark_RavenM is offline
Miembro
 
Registrado: dic 2007
Posts: 25
Poder: 0
Dark_RavenM Va por buen camino
A Mi Se Me Hace Que Seria Mejor Hacerlo Con Sql Asi Sacas Un Resultado Y Lo Puedes Mostrar En Un Datagrid rapida y facilmente, Algo Como

Select W.col1,count(w.col2) Menos30,
(select Count(w2.col2) From Wine W2 Where W2.col2>30 And W2.col2<60 And W2.col1=w.col1) Menos60,
Count(w.col2)+(select Count(w2.col2) From Wine W2 Where W2.col2>30 And W2.col2<60 And W2.col1=w.col1) Total
From Wine W Where W.col2<=30 Group By W.col1

Se Que Hay Una Manera Mas Rapida Pero Ahorita No Se Me Ocurre Una
Responder Con Cita
  #4  
Antiguo 16-01-2009
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 jaimeh, puedes hacerlo con una consulta como te dice dark_ravenM, a mi se me ocurre algo así:

Digamos que tu tabla se llama Tiempos

Código SQL [-]
Select Distinct(t.dias), t1.d30, t2.d60 From Tiempos t 
Left Join (Select dias, Count(dias) as d30 From Tiempos
              Where tiempo<='00:30:00' Group By dias) t1 on (t.dias=t1.dias)
Left Join (Select dias, Count(dias) as d60 From Tiempos
              Where tiempo>='00:30:00' and tiempo<='00:59:00' group by dias) t2 on (t.dias=t2.dias)

Ahora para el total sobre cada registro, yo utilizaría un campo calculado.

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
  #5  
Antiguo 16-01-2009
jaimeh jaimeh is offline
Miembro
 
Registrado: mar 2007
Posts: 68
Poder: 18
jaimeh Va por buen camino
Muchas gracias por la contestación me ha valido de mucho.

Lo de dark fallaba para una fecha que no tuviese una hora < 00:30:00.
No apareceria ningun resultado ni siquiera los de mas de 30 que tuviere.

Lo de Caro si funciona y lo he ampliado

<delphi>
' Select Distinct(t.Fecha), t1.d15, t2.d30, t3.d60, t4.Total ' +
' From Temporal4 t ' +

' Left Join (Select Fecha, Count(Fecha) as d15 From Temporal4 ' +
' Where Diferencia >= ' + '''00:00:00''' +
' and Diferencia < ' + '''00:15:00''' +
' group by Fecha) t1 on (t.Fecha=t1.Fecha) ' +

' Left Join (Select Fecha, Count(Fecha) as d30 From Temporal4 ' +
' Where Diferencia >= ' + '''00:15:00''' +
' and Diferencia < ' + '''00:30:00''' +
' Group By Fecha) t2 on (t.Fecha=t2.Fecha) ' +

' Left Join (Select Fecha, Count(Fecha) as d60 From Temporal4 ' +
' Where Diferencia >= ' + '''00:30:00''' +
' and Diferencia < ' + '''01:00:00''' +
' group by Fecha) t3 on (t.Fecha=t3.Fecha) ' +

' Left Join '+
' (select Fecha, Count(diferencia) as Total From Temporal4 ' +
' group by fecha) t4 on (t.Fecha=t4.Fecha) '

</delphi>


Me faltaría que la otra vez se me olvido los otros totales


dias----------<00:30:00---------<00:60:00--------total
-------------------------------------------------------

3/05/2008--------2---------------------------------2
5/05/2008--------1------------------1--------------2

total2-------------3------------------1--------------4



Muchas gracias a todos por ser tan amables.
Responder Con Cita
  #6  
Antiguo 19-01-2009
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Código SQL [-]
 
 
     Select Dias, 
                Sum(Case When tiempo<='00:30:0' Then 1 Else 0 End) As MenorIgual30,
                Sum(Case When (tiempo > '00:30:0') And (tiempo <= '00:59:00') Then 1 Else 0 End) As Entre30Y60,
                Sum(Case When tiempo<='00:30:0' Then 1 Else 0 End) + 
                Sum(Case When (tiempo > '00:30:0') And (tiempo <= '00:59:00') As Total 
       From Tiempo
Group By Dias
Union 
     Select 'Total2' As Dias, 
                Sum(Case When tiempo<='00:30:0' Then 1 Else 0 End) As MenorIgual30,
                Sum(Case When (tiempo > '00:30:0') And (tiempo <= '00:59:00') Then 1 Else 0 End) As Entre30Y60,
                Sum(Case When tiempo<='00:30:0' Then 1 Else 0 End) + 
                Sum(Case When (tiempo > '00:30:0') And (tiempo <= '00:59:00') As Total 
       From Tiempo


Para que la unión funcione sin problemas Dias debe ser convertido a cadena
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #7  
Antiguo 21-01-2009
jaimeh jaimeh is offline
Miembro
 
Registrado: mar 2007
Posts: 68
Poder: 18
jaimeh Va por buen camino
Muchas gracias a todos por ser tan amables y responderme.

Ahora tengo otro problema que en delphi se complica bastante. Y con SQL
creo que se solucionaria mejor pero tengo menos idea.
A ver si me podeis ayudar también en con esto. Os lo agradecería enormemente.

Ahora tengo una tabla (Diferencias) parecida a esta

Fecha------Hora_Diferencia------Hora_Emision
(Date)-------(Time)---------------(Time)------->Tipos de Campos

04/03/2008---00:20:00------------08:38:00
01/03/2008---00:22:00------------08:41:00
01/03/2008---00:32:00------------08:31:00
03/03/2008---00:22:00------------08:49:00
05/03/2008---00:24:00------------11:14:00
01/03/2008---00:23:00------------10:01:00
02/03/2008---00:05:00------------08:49:00
02/03/2008---00:28:00------------09:04:00
02/03/2008---00:40:00------------11:52:00
05/03/2008---00:53:00------------08:02:00
02/03/2008---00:21:00------------08:47:00
02/03/2008---00:03:00------------10:05:00
03/03/2008---00:15:00------------10:49:00
02/03/2008---00:36:00------------11:40:00
05/03/2008---00:40:00------------09:41:00


Y quiero que me de algo parecido a esto.
Tabla(Diferencia_Salida)

Denominacion----Franja-----<00:15:00----<00:30:00----<01:00:00
(String)--------(Time)-------(Time)------(Time)--------(Time)---->Tipos

01/03/2008-----08:00:00----------------------------------
01/03/2008-----08:30:00--------------------1-------------1
01/03/2008-----09:00:00----------------------------------
01/03/2008-----09:30:00-----------------------------------
01/03/2008-----10:00:00--------------------1--------------
01/03/2008-----10:30:00-----------------------------------
01/03/2008-----11:00:00-----------------------------------
01/03/2008-----11:30:00-----------------------------------
01/03/2008-----12:00:00-----------------------------------
02/03/2008-----08:00:00----------------------------------
02/03/2008-----08:30:00---------1------------------------
02/03/2008-----09:00:00--------------------2--------------
02/03/2008-----09:30:00----------------------------------
02/03/2008-----10:00:00---------1------------------------
02/03/2008-----10:30:00-----------------------------------
02/03/2008-----11:00:00-----------------------------------
02/03/2008-----11:30:00----------------------------------2
02/03/2008-----12:00:00-----------------------------------
.....
....

05/03/2008----
...

La idea es que entre una hora de la franja horaria y la siguiente (en este caso cada media hora) tiene que estar dentro la Hora_Emision y luego contar los que hay de Hora_Diferencia como en los post anteriores.

A ver si me podéis ayudar amigos.
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
Como conectar Delphi a dB 7 mediante archivo udl ? Saiyan Conexión con bases de datos 1 21-04-2008 18:20:11
Realizar una conexion FTP mediante Delphi KeyMan Varios 21 24-09-2007 15:45:46
Como obtener mediante delphi el nombre o la ip de una pc carlos gonzalez Varios 2 06-12-2005 01:27:06
Conectar a Delphi mediante Access marc.carrasco Conexión con bases de datos 1 19-05-2005 22:41:37
Conectar Aplicación Delphi a MySql mediante ODBC Nasio MySQL 11 26-07-2004 12:42:21


La franja horaria es GMT +2. Ahora son las 18:24: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