Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 04-12-2008
juangabriel1786 juangabriel1786 is offline
Miembro
 
Registrado: ene 2006
Posts: 38
juangabriel1786 Va por buen camino
Angry Sacar el promedio o media en sql ?

Hola a todos, estoy realizando un select con MySql 5.0 y delphi 7 , tengo una base de datos con una tabla paciente donde se registra el codigo _ paciente, nombre,apellidos,fecha_creacion,etc, bueno mi problema es que en la base de dato se registran pacientes diario y me gustaria saber como puedo sacar la media(promedio) de paciente que entran diario a la base de datos en una fecha de terminada.

Mi conocimiento me dise que debo hacer un count al codigo_paciente y luego dividir entre las fechas por ejemplo si elijo entre 2008-01-01 y 2008-12-04 y divirlo entre la cantidad de dia que hay entre esas fechas, pero nose como acerlo ?

Última edición por juangabriel1786 fecha: 10-12-2008 a las 18:40:58. Razón: el select que crei que funcionaba , no lo hace.
Responder Con Cita
  #2  
Antiguo 04-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.330
Lepe cantidad desconocida en este momento
busca por "sql avg" en google, avg es la función que te hace la media.

No la he usado nunca, por eso no doy más info.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 04-12-2008
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá, D.C.
Posts: 383
TOPX Va por buen camino
Hola,

Con:

Código SQL [-]
SELECT COUNT(*)/DATEDIFF(DATE_ADD('2008-12-04', INTERVAL 1 DAY), '2008-01-01')
FROM paciente
WHERE fecha_creacion BETWEEN '2008-01-01' AND '2008-12-04'

Se obtendría el promedio de pacientes registrados entre 2008-01-01 y 2008-12-04.
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #4  
Antiguo 04-12-2008
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.086
FGarcia Va por buen camino
Considerando que de MySQL se lo mismo que de Quimica organica y de delphi se lo mismo que algebra basica esto me ha funcionado con Firebird

Código Delphi [-]
//qyPlot es un query.
//qyPlot.Fields[1].value son los valores que contiene ese indice de campo (p.e. 49.95, 50.0, 49.98, 50.10)
//añade la unidad Math al uses ahi esta declarado MeanAndStdDev
 
procedure TdmDatos.CalculaMediaStdDev;
var
  Numeros: array of double;
  nConta: integer;
  Desviacion,Promedio: extended;
begin
  if qyPlot.recordcount > 0 then
    begin
      setlength(Numeros, qyPlot.RecordCount);
      for nConta := 1 to qyPlot.RecordCount do
        begin
          Numeros[nConta-1] := qyPlot.Fields[1].Value ;
          qyPlot.Next ;
        end;
      //Calculamos el promedio y la desviacion estandard
      MeanAndStdDev(Numeros,Promedio,Desviacion);
      frmVistaPrincipal.ActualizaEstadistica(promedio,desviacion); //aqui actualizo el dato del formulario principal
    end;
end;

Es una idea. Ahora que si tu lo quieres como procedimiento almacenado en tu bd pues......ni como ayudarte. Suerte
__________________
ESTO ES UN FORO ... NO UN MÓVIL
¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender?
Responder Con Cita
  #5  
Antiguo 04-12-2008
juangabriel1786 juangabriel1786 is offline
Miembro
 
Registrado: ene 2006
Posts: 38
juangabriel1786 Va por buen camino
Cuando ejecuto el siguiente codigo en un adoquery el valor me sale en 0 y cuando lo ejecuto en un editor de sql como EMS SQL manager me da el valor correcto

Cita:
SELECT COUNT(*)/DATEDIFF(DATE_ADD('2008-12-04', INTERVAL 1 DAY), '2008-01-01')
FROM paciente
WHERE fecha_creacion BETWEEN '2008-01-01' AND '2008-12-04'
y realmente me interesa acerlo en un adoquery, para adaptarlo a mis sitema tuve que hacer lo siguiente
Cita:
select count(*)/datediff(date_add(:n1, interval 1 day), :n2) as Media
from paciente p
where p.fcreacion between :n1 and :n2

Última edición por juangabriel1786 fecha: 10-12-2008 a las 18:08:53.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Como capturar el promedio de un tdbchart? ANXO Conexión con bases de datos 3 28-11-2005 15:41:14
Recuperar Promedio de un TdbChart en un dbedit ANXO Gráficos 0 20-11-2005 13:05:35
Como hago un promedio de una columna? ANXO Conexión con bases de datos 10 12-10-2005 01:56:08
Promedio de campo calculado con una sub-consulta ContraVeneno SQL 8 06-10-2005 16:38:06
Media ración. marcoszorrilla Humor 0 16-04-2004 22:56:55


La franja horaria es GMT +2. Ahora son las 10:30:05.


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