Club Delphi  
    FTP   CCD     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 Buscar en Tema Desplegado
  #1  
Antiguo 10-10-2005
ANXO ANXO is offline
Miembro
 
Registrado: mar 2005
Posts: 17
Poder: 0
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
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
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
Poder: 0
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
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
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: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #6  
Antiguo 11-10-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
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: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #8  
Antiguo 11-10-2005
ANXO ANXO is offline
Miembro
 
Registrado: mar 2005
Posts: 17
Poder: 0
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
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
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 10:16: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