Ayuda con Sentencia SQL con Mysql

Ayuda con Sentencia SQL con Mysql

Postby ruben Dario » Fri Mar 13, 2015 4:34 pm

Saludos Al Forum.
Tengo esta sentencia Sql, como puede sacar un promedio de los 12 meses lo hago de esta manera pero no me sirve , porque quiero que el promedio solamente lo divida sobre el Numero de meses donde hay valores
Ejemplos
(12,56,13,0,45,0,56,0,0,0,0,12) Daria este valor si lo divido entre 12 Daria este valor de 16.16
Pero el valor correcto seria asi 32.33 es decir lo divide sobre 6 donde hay ceros no se tendrian en cuenta.


(A0.PRE1+A0.PRE2+A0.PRE3+A0.PRE4+A0.PRE5+A0.PRE6+A0.PRE7+A0.PRE8+A0.PRE9+A0.PRE10+A0.PRE11+A0.PRE12)/12



Code: Select all  Expand view

SELECT A0.PLANTA,A0.CODPROD,A0.VERPROD,A0.ANO,A0.PRE1,A0.PRE2,
(A0.PRE1+A0.PRE2+A0.PRE3+A0.PRE4+A0.PRE5+A0.PRE6+A0.PRE7+A0.PRE8+A0.PRE9+A0.PRE10+A0.PRE11+A0.PRE12) AS PRE13,
(A0.PRE1+A0.PRE2+A0.PRE3+A0.PRE4+A0.PRE5+A0.PRE6+A0.PRE7+A0.PRE8+A0.PRE9+A0.PRE10+A0.PRE11+A0.PRE12)/12 AS PRE14,
FROM presdata AS A0

 
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1061
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Ayuda con Sentencia SQL con Mysql

Postby joseluisysturiz » Sat Mar 14, 2015 2:39 pm

Intenta con select anidado, donde en el 2do select uses un count con un where o un if de los registros donde el valor sea mayor a cero, lo pasas a una VAR y luego divides tu monto entre esa VAR...nose si captas la idea...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Ayuda con Sentencia SQL con Mysql

Postby nageswaragunupudi » Sat Mar 14, 2015 8:02 pm

Code: Select all  Expand view
( PRE1 + PRE2 + PRE3 + PRE4 + PRE5 + PRE6 + PRE7 + PRE8 + PRE9 + PRE10 + PRE11 + PRE12 ) /
( LEAST( 1, PRE1 ) + LEAST( 1, PRE2 ) + LEAST( 1, PRE3 ) + LEAST( 1, PRE4 ) + LEAST( 1, PRE5 ) +
LEAST( 1, PRE6 ) + LEAST( 1, PRE7 ) + LEAST( 1, PRE8 ) + LEAST( 1, PRE9 ) +
LEAST( 1, PRE10 ) + LEAST( 1, PRE11 ) + LEAST( 1, PRE12 ) )

 
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10295
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Ayuda con Sentencia SQL con Mysql

Postby FranciscoA » Sat Mar 14, 2015 8:28 pm

Grandioso ejemplo Mr. Nages.
Lo paso a formar parte de mi fichero de ejemplos MySql. Desconocia LEAST
Muchas gracias.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2112
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Ayuda con Sentencia SQL con Mysql

Postby ruben Dario » Sat Mar 14, 2015 11:39 pm

Saludos.

Gracias Mr. Nages,
Funciono desconocia esta funcion lo que hacia.
Tengo una Duda , que pasaria si el valor de la base de datos fuera Negativa, No tamaria 1 si no el Valor Negativo, Hay seria un problema , no se si estoy equivocado en mi apreciacion.


Gracias
Last edited by ruben Dario on Sun Mar 15, 2015 1:13 am, edited 3 times in total.
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1061
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Ayuda con Sentencia SQL con Mysql

Postby ruben Dario » Sat Mar 14, 2015 11:41 pm

joseluisysturiz wrote:Intenta con select anidado, donde en el 2do select uses un count con un where o un if de los registros donde el valor sea mayor a cero, lo pasas a una VAR y luego divides tu monto entre esa VAR...nose si captas la idea...saludos... :shock:


Gracias Por tu Respuesta,
Jose Luis , y tienes un ejemplo de lo que tu dices, me gustaria ver el codigo como se hace . con esta funciona LEAST me funciono.



Gracias
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1061
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Ayuda con Sentencia SQL con Mysql

Postby joseluisysturiz » Sat Mar 14, 2015 11:43 pm

Aunque esta buena la idea del LEAST, si hay muchos registros seria una consulta descomunal, cuando combinando COUNT/IF/WHERE, tomaria todos los registros que cumplan dicha condicion dada, entre gustos y colores...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Ayuda con Sentencia SQL con Mysql

Postby joseluisysturiz » Sat Mar 14, 2015 11:48 pm

ruben Dario wrote:
joseluisysturiz wrote:Intenta con select anidado, donde en el 2do select uses un count con un where o un if de los registros donde el valor sea mayor a cero, lo pasas a una VAR y luego divides tu monto entre esa VAR...nose si captas la idea...saludos... :shock:


Gracias Por tu Respuesta,
Jose Luis , y tienes un ejemplo de lo que tu dices, me gustaria ver el codigo como se hace . con esta funciona LEAST me funciono.



Gracias


Ruben, si no tienes que validar mas nada, como lo puso NAGES es una muy buena manera, tampoco conocia la funcion, creo hay qye echarle una repasadita a las nuevas de mysql, saludos...
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Ayuda con Sentencia SQL con Mysql

Postby Daniel Garcia-Gil » Sun Mar 15, 2015 1:52 am

Saludos

Siguiendo la idea de rao y joseluis podrias tener algo asi

Code: Select all  Expand view

( PRE1 + PRE2 + PRE3 + PRE4 + PRE5 + PRE6 + PRE7 + PRE8 + PRE9 + PRE10 + PRE11 + PRE12 ) /
( IF( PRE1 != 0, 1, 0 ) + IF( PRE2 != 0, 1, 0 ) + IF( PRE3 != 0, 1, 0 ) + IF( PRE4 != 0, 1, 0 ) + IF( PRE5 != 0, 1, 0 ) +
IF( PRE6 != 0, 1, 0 ) + IF( PRE7 != 0, 1, 0 ) + IF( PRE8 != 0, 1, 0 ) + IF( PRE9 != 0, 1, 0 ) +
IF( PRE10 != 0, 1, 0 ) + IF( PRE11 != 0, 1, 0 ) + IF( PRE12 != 0, 1, 0 ) )
 
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Ayuda con Sentencia SQL con Mysql

Postby jnavas » Sun Mar 15, 2015 8:24 am

ruben Dario wrote:Saludos Al Forum.
Tengo esta sentencia Sql, como puede sacar un promedio de los 12 meses lo hago de esta manera pero no me sirve , porque quiero que el promedio solamente lo divida sobre el Numero de meses donde hay valores
Ejemplos
(12,56,13,0,45,0,56,0,0,0,0,12) Daria este valor si lo divido entre 12 Daria este valor de 16.16
Pero el valor correcto seria asi 32.33 es decir lo divide sobre 6 donde hay ceros no se tendrian en cuenta.


(A0.PRE1+A0.PRE2+A0.PRE3+A0.PRE4+A0.PRE5+A0.PRE6+A0.PRE7+A0.PRE8+A0.PRE9+A0.PRE10+A0.PRE11+A0.PRE12)/12



Code: Select all  Expand view

SELECT A0.PLANTA,A0.CODPROD,A0.VERPROD,A0.ANO,A0.PRE1,A0.PRE2,
(A0.PRE1+A0.PRE2+A0.PRE3+A0.PRE4+A0.PRE5+A0.PRE6+A0.PRE7+A0.PRE8+A0.PRE9+A0.PRE10+A0.PRE11+A0.PRE12) AS PRE13,
(A0.PRE1+A0.PRE2+A0.PRE3+A0.PRE4+A0.PRE5+A0.PRE6+A0.PRE7+A0.PRE8+A0.PRE9+A0.PRE10+A0.PRE11+A0.PRE12)/12 AS PRE14,
FROM presdata AS A0

 


Ruben
En mi experiencia de diseño de base de datos no utilizo tablas con valores acumulados (esto lo hacia con clipper)
Busco el origen de las transacciones y aplico una vista, sum(), AVERAGE() sobre las transaciones y genero resultados confiables.

para realizar un promedio ponderado
podras obtener el valor /12 por / 12 poderado mediante la funcion IF( de MySQL ejemplo:

(A0.PRE1+A0.PRE2+A0.PRE3+A0.PRE4+A0.PRE5+A0.PRE6+A0.PRE7+A0.PRE8+A0.PRE9+A0.PRE10+A0.PRE11+A0.PRE12) / (IF(PRE_01>0,1,0)+IF(PRE_02>0,1,0)+IF(PRE_03>0,1,0))
User avatar
jnavas
 
Posts: 473
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Ayuda con Sentencia SQL con Mysql

Postby ruben Dario » Sun Mar 15, 2015 12:13 pm

jnavas wrote:
ruben Dario wrote:Saludos Al Forum.
Tengo esta sentencia Sql, como puede sacar un promedio de los 12 meses lo hago de esta manera pero no me sirve , porque quiero que el promedio solamente lo divida sobre el Numero de meses donde hay valores
Ejemplos
(12,56,13,0,45,0,56,0,0,0,0,12) Daria este valor si lo divido entre 12 Daria este valor de 16.16
Pero el valor correcto seria asi 32.33 es decir lo divide sobre 6 donde hay ceros no se tendrian en cuenta.


(A0.PRE1+A0.PRE2+A0.PRE3+A0.PRE4+A0.PRE5+A0.PRE6+A0.PRE7+A0.PRE8+A0.PRE9+A0.PRE10+A0.PRE11+A0.PRE12)/12



Code: Select all  Expand view

SELECT A0.PLANTA,A0.CODPROD,A0.VERPROD,A0.ANO,A0.PRE1,A0.PRE2,
(A0.PRE1+A0.PRE2+A0.PRE3+A0.PRE4+A0.PRE5+A0.PRE6+A0.PRE7+A0.PRE8+A0.PRE9+A0.PRE10+A0.PRE11+A0.PRE12) AS PRE13,
(A0.PRE1+A0.PRE2+A0.PRE3+A0.PRE4+A0.PRE5+A0.PRE6+A0.PRE7+A0.PRE8+A0.PRE9+A0.PRE10+A0.PRE11+A0.PRE12)/12 AS PRE14,
FROM presdata AS A0

 


Ruben
En mi experiencia de diseño de base de datos no utilizo tablas con valores acumulados (esto lo hacia con clipper)
Busco el origen de las transacciones y aplico una vista, sum(), AVERAGE() sobre las transaciones y genero resultados confiables.

para realizar un promedio ponderado
podras obtener el valor /12 por / 12 poderado mediante la funcion IF( de MySQL ejemplo:

(A0.PRE1+A0.PRE2+A0.PRE3+A0.PRE4+A0.PRE5+A0.PRE6+A0.PRE7+A0.PRE8+A0.PRE9+A0.PRE10+A0.PRE11+A0.PRE12) / (IF(PRE_01>0,1,0)+IF(PRE_02>0,1,0)+IF(PRE_03>0,1,0))



Gracias por tu respuesta,
Entamos de Acuerdo , solamente lo requiero para generar consultas o reportes
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1061
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 25 guests

cron