Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 10-10-2005
ANXO ANXO is offline
Miembro
 
Registrado: mar 2005
Posts: 17
ANXO Va por buen camino
Como hago un promedio de una columna?

Hola a todos, mi problema es el siguiente:

Tengo una tabla conectada a un dbgrid, con 5 columnas.Quiero sumar el valor de todos los campos de una de estas columnas y dividir el resultado por el numero de campos, es decir hacer el PROMEDIO.

Tambien deseo hallar el campo con el valor mas alto de otra columna.

¿Alguien me puede ayudar?

Gracias. Un saludo
Responder Con Cita
  #2  
Antiguo 10-10-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Modelador
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.237
vtdeleon Va por buen camino
Saludos

Lo mejor para este caso es usar Sentencias SQL, ya que no es posible(me puedo equivocar) obtener la sumatoria de un campo.
Qué DB usas?
Sabes SQL?
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 10-10-2005
ANXO ANXO is offline
Miembro
 
Registrado: mar 2005
Posts: 17
ANXO Va por buen camino
Uso una tabla Paradox, y lamentablemente no tengo ni idea de SQL que ya he visto que la solucion por ahi seria bastante simple.

Pensaba en sumar todos los campos de esa columna, de alguna forma algo arcaica y ...... en fin sacar el promedio asi, pero tampoco me aclaro.

Si usara SQL tendria que volver a empezar de cero con mi programa.

Muchas gracias por contestar. Un saludo.
Responder Con Cita
  #4  
Antiguo 11-10-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Modelador
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.237
vtdeleon Va por buen camino
Saludos

De la única forma que veo que se puede hacer es:
Código Delphi [-]
var
  Sum,Prom,Mayor:real;
  Regs:integer;
begin
  Mayor:=0;
  with table1 do begin
    open;
    first;
    while not eof do begin
      Sum:=Sum+FieldByName('campo').AsFloat;
      inc(Regs);
      if mayor'campo').AsFloat then
        Mayor:=FieldByName('campo').AsFloat;
      Next;
    end;
    Prom:=Sum/Regs;
    Close;
  end;
end;
Esto robaría recursos del sistema.
Lo mejor es que busques en Google algun manual(de los miles que hay) e investigue y aprendas la Sentencias
Con SQL
Código SQL [-]
Select (Sum(campo)/count(campo)) as promedio
from tabla
Y solo con esta linea, obtienes el promedio
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #5  
Antiguo 11-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 18.995
roman Va camino a la fama
Cita:
Empezado por ANXO
Si usara SQL tendria que volver a empezar de cero con mi programa.
Sí pero a fin de cuentas te será más sencillo y eficiente.

1. Coloca una componente TQuery
2. Asigna su propiedad DatabaseName al alias de tu base
3. En su propiedad SQL escribes:

Código SQL [-]
select avg(campo) from tabla

4. Ejecutas la consulta con

Query.Open

5. Tomas el resultado con

Query.Fields[0].AsFloat

Para el valor más alto usas

Código SQL [-]
select max(campo) from tabla

// Saludos
__________________

Menos reyes y más elefantes
http://clubdelphi.com/correo_contacto_clubdelphi.png
Responder Con Cita
  #6  
Antiguo 11-10-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Modelador
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.237
vtdeleon Va por buen camino
Cita:
Empezado por roman
Código SQL [-]
select avg(campo) from tabla
REcorcholes me había olvidado del Avg
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #7  
Antiguo 11-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 18.995
roman Va camino a la fama
Cita:
Empezado por roman
Sí pero a fin de cuentas te será más sencillo y eficiente.
Estaba yo distraído cuando contesté esto. No tienes porque empezar de cero. Todo lo que ya tengas hecho con tablas déjalo como está. Además Paradox es más eficiente con tablas que con querys. Sólo para casos como el que planteas es que agregas un query.

// Saludos
__________________

Menos reyes y más elefantes
http://clubdelphi.com/correo_contacto_clubdelphi.png
Responder Con Cita
  #8  
Antiguo 11-10-2005
ANXO ANXO is offline
Miembro
 
Registrado: mar 2005
Posts: 17
ANXO Va por buen camino
Hola, agregé un query y escribi el codigo que me indicastes, todo bien por esa parte, pensaba que no me daria ningun error, pero me aparece un mensaje de error: " capability not supported", sabeis por que me da ese error?

Un saludo.
Responder Con Cita
  #9  
Antiguo 11-10-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Modelador
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.237
vtdeleon Va por buen camino
Saludos

Chequea esta pagina:
http://bdn.borland.com/article/0,1410,25183,00.html
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #10  
Antiguo 11-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 18.995
roman Va camino a la fama
Cita:
Empezado por ANXO
me aparece un mensaje de error: " capability not supported", sabeis por que me da ese error?
Realmente no lo entiendo. Antes de mandar el otro mensaje probé el código con Paradox y funcionó sin problema. ¿Qué tipo de datos es el campo sobre el que quieres sacar el promedio? ¿Qué versión del BDE tienes?

// Saludos
__________________

Menos reyes y más elefantes
http://clubdelphi.com/correo_contacto_clubdelphi.png
Responder Con Cita
  #11  
Antiguo 12-10-2005
ANXO ANXO is offline
Miembro
 
Registrado: mar 2005
Posts: 17
ANXO Va por buen camino
La consulta la hago sobre un campo calculado de la tabla, y me da ese error.
Sin embargo, cuando realizo la consulta sobre un campo propio de la tabla ( no un oncalcfield) el programa funciona.
Me temo que no puedo realizar una consulta sobre un campo calculado, esto es asi?
Un saludo.
Responder Con Cita
Respuesta


Herramientas
Desplegado

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


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


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi