• Miércoles 8 de Mayo de 2024, 04:17

Autor Tema:  Alguna Idea???  (Leído 3419 veces)

el bare

  • Miembro activo
  • **
  • Mensajes: 65
  • Nacionalidad: mx
    • Ver Perfil
Alguna Idea???
« en: Lunes 25 de Enero de 2010, 04:04 »
0
Que tal, mi pregunta es la siguiente:

Como puedo hacer lo que se pide en la imagen??



Lo primero que se me ocurrio fue hacerlo con edits, y que una vez que los datos estuvieran alli, se hiciera el calculo con un boton, pero no estoy seguro de que sea la opcion mas optima y eficaz..No habra alguna otra manera de hacerlo??..no se, con alguna consulta de SQL o alguna otra solucion???..Lo digo porque en la imagen es solo el promedio de 4, pero creo que despues habra que hacerlo con 22, imaginense si lo hago con los edits..... :oops:


Cualquier Sugerencia es bienvenida... :)


De antemano...Gracias por su atencion.... :hola:

Saludos... :hola:

AnimaSubtilis

  • Miembro MUY activo
  • ***
  • Mensajes: 172
  • Nacionalidad: co
    • Ver Perfil
Re: Alguna Idea???
« Respuesta #1 en: Lunes 25 de Enero de 2010, 17:39 »
0
Mira es algo muy sencillo de hacer...

Código: C++
  1.  
  2.   int suma;
  3.   consulta->Close();
  4.   consulta->CommandText="select sum(TotConsultas) as suma from tabla where Trimestre <> 'Promedio anual' ";
  5.   consulta->Open();  
  6.   suma = consulta->FieldByName("suma")->AsInteger;
  7. //  y luego es hacer el update en la tabla  
  8.  
  9.  

siendo consulta un TADODataSet

ya seria complementar el where de la consulta.... que pida el año y el update se realizaria de esa manera en fin de resto ya es lo que nescesites

taluego........
A menudo unas pocas horas de «prueba y ensayo» podrán ahorrarte minutos de leer manuales.
[size=150]
Dios nos Otorgo el uno y el cero....y con eso creamos un universo....[/size]

[size=109]↑°°°°ÄNÍMÄ §ÛBTÍLͧ°°°°↓[/size]


el bare

  • Miembro activo
  • **
  • Mensajes: 65
  • Nacionalidad: mx
    • Ver Perfil
Re: Alguna Idea???
« Respuesta #2 en: Martes 26 de Enero de 2010, 00:06 »
0
Que tal Anima.. ^_^

ya probe lo de SUM,...:D..funciona bien, la verdad es q no habia usado esa funcion de sql.. ^_^

oye, una pregunta..existe algun tipo de dato en sql que te permita agregar caracteres, pero a la vez poder usar el SUM???....porque los tenia con nvarchar y tuve q cambiarlo a float para hacer la operacion.

Saludos.... :hola:
« última modificación: Miércoles 27 de Enero de 2010, 02:32 por el bare »

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Alguna Idea???
« Respuesta #3 en: Martes 26 de Enero de 2010, 02:19 »
0
Si lo que quieres es sumar las columnas entonces no se usara SUM
Otro caso extraño es que se le sume el año :S (lo que hace pensar que estan mal subrayadas las columnas en forma horizontal (filas) )

Sin año
Código: SQL
  1.  
  2. SELECT (Total_Consultas + Total_Medicamentos + Total_Horas) / 3  AS 'Promedio'
  3. FROM tabla WHERE Trimestre <> 'Promedio anual'
  4.  
  5.  

Con año
Código: SQL
  1.  
  2. SELECT (Total_Consultas + Total_Medicamentos + Total_Horas + año ) / 4  AS 'Promedio'
  3. FROM tabla WHERE Trimestre <> 'Promedio anual'
  4.  
  5.  

Si lo que quieres es obtener el promedio por columna
Código: SQL
  1.  
  2. SELECT Trimestre, Avg(Total_Consultas) AS 'Promedio Consultas' , Avg(Total_Medicamentos)AS 'Promedio Medicamento' , Avg(Total_Horas) AS 'Promedio Horas'
  3. FROM tabla
  4. GROUP BY Trimestre
  5.  
  6.  

Código: SQL
  1.  
  2.  SELECT Trimestre, Avg(Total_Consultas) AS 'Promedio Consultas' , Avg(Total_Medicamentos)AS 'Promedio Medicamento' , Avg(Total_Horas) AS 'Promedio Horas'  FROM tabla  GROUP BY Trimestre
  3.  
  4.  

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

el bare

  • Miembro activo
  • **
  • Mensajes: 65
  • Nacionalidad: mx
    • Ver Perfil
Re: Alguna Idea???
« Respuesta #4 en: Martes 26 de Enero de 2010, 23:38 »
0
Que tal Tano, jejeje, asi es, las colmnas estan mal subrayadas, deberia ser de manera vertical... ^_^  ^_^


Cuando dices Avg(Nombre_Columna)...que es el Avg??..Algun Alias??..no se mucho sobre SQL, pero creo que el AS era utilizado para apodar o dar alias a una columna....aaaaa, y que significa "<>"??

y otra pregunta, cuando se hace esta consulta...

Código: C++
  1.  
  2.  SELECT (Total_Consultas + Total_Medicamentos + Total_Horas) / 3  AS 'Promedio'
  3.  FROM tabla WHERE Trimestre <> 'Promedio anual'
  4.  
  5.  

Como se van a sumar las columnas?...se suma primero cada columna, y luego los totales de la suma de cada columna se suman y se divide entre 3??...o se suma como esta subrayado en la imagen??

Por cierto, ahorita estoy probando algunas consultas, me llamo la atencion lo de SUM, la hice y me sumo lo q habia en la columna, pero mi pregunta es..que va a pasar cuando se agreguen mas registros a la tabla?....hay alguna consulta para obtener el numero de registros que hay en la tabla?..asi para dividirla entre ese numero y no uno fijo...

Saludos.... :hola:

AnimaSubtilis

  • Miembro MUY activo
  • ***
  • Mensajes: 172
  • Nacionalidad: co
    • Ver Perfil
Re: Alguna Idea???
« Respuesta #5 en: Miércoles 27 de Enero de 2010, 14:50 »
0
Claro que la hay...

Código: SQL
  1.  
  2.  SELECT COUNT(*) FROM TABLA
  3.  
  4.  

avg() es una sentencia para sacar el promedio........

Código: SQL
  1.  
  2.   SELECT AVG(Total_Consultas + Total_Medicamentos + Total_Horas)  AS 'Promedio'
  3.   FROM tabla WHERE Trimestre <> 'Promedio anual' AND ano = '2009'
  4.  
  5.  

y asi te evitas el dividir y lo del año lo podrias enviar como parametro para calcular solo lo del año que desees... o si no tus tablas seguiran creciendo y tomarias todos los datos.......
A menudo unas pocas horas de «prueba y ensayo» podrán ahorrarte minutos de leer manuales.
[size=150]
Dios nos Otorgo el uno y el cero....y con eso creamos un universo....[/size]

[size=109]↑°°°°ÄNÍMÄ §ÛBTÍLͧ°°°°↓[/size]


F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Alguna Idea???
« Respuesta #6 en: Miércoles 27 de Enero de 2010, 16:19 »
0
Asi es como te ha respondido AnimaSubtilis

Avg es una funcion que significa Average (Promedio o Media) http://en.wikipedia.org/wiki/Average

Y cumple el con tu proposito, no necesitas saber cuantos registros para crear la division, ya que esta funcion lo hace por ti. obviamente conciderando cuando tu base de datos creece, pues para eso estan diseniadas las bases de datos para creecer (en filas / renglones / registros ...) la funcion actuara sobre el dominio

As es 'como' exactamente un Alias  :smartass:



Cita de: "el bare"
Que tal Tano, jejeje, asi es, las colmnas estan mal subrayadas, deberia ser de manera vertical... ^_^  ^_^


Cuando dices Avg(Nombre_Columna)...que es el Avg??..Algun Alias??..no se mucho sobre SQL, pero creo que el AS era utilizado para apodar o dar alias a una columna....aaaaa, y que significa "<>"??

y otra pregunta, cuando se hace esta consulta...

Código: C++
  1.  
  2.  SELECT (Total_Consultas + Total_Medicamentos + Total_Horas) / 3  AS 'Promedio'
  3.  FROM tabla WHERE Trimestre <> 'Promedio anual'
  4.  
  5.  

Como se van a sumar las columnas?...se suma primero cada columna, y luego los totales de la suma de cada columna se suman y se divide entre 3??...o se suma como esta subrayado en la imagen??

Por cierto, ahorita estoy probando algunas consultas, me llamo la atencion lo de SUM, la hice y me sumo lo q habia en la columna, pero mi pregunta es..que va a pasar cuando se agreguen mas registros a la tabla?....hay alguna consulta para obtener el numero de registros que hay en la tabla?..asi para dividirla entre ese numero y no uno fijo...

Saludos.... :hola:

bueno en la consulta :

Código: SQL
  1. SELECT (Total_Consultas + Total_Medicamentos + Total_Horas) / 3  AS 'Promedio'
  2.  FROM tabla WHERE Trimestre <> 'Promedio anual'
  3.  
  4.  

Se suman las columnas y obtines el promedio dividiendo entre 3 por que son 3 columnas, y a no ser que modifiques la estructura de la tabla siempre seran 3
no tiene nada que ver con el numero de registros que tengas, y esa es tu principal confusion

si hicieras esa consulta asi, una columna adicional (calculada con el alias de promedio)

Código: SQL
  1. SELECT Total_Consultas,Total_Medicamentos,TotalHoras, (Total_Consultas + Total_Medicamentos + Total_Horas) / 3  AS 'Promedio'
  2.  FROM tabla WHERE Trimestre <> 'Promedio anual'
  3.  
  4.  

Obtendrias algo como esto:
Código: PHP
  1.  
  2. ====================================================================================
  3. |  Total_Consultas | Total_Medicamentos    | TotalHoras    |  Promedio    |
  4. ====================================================================================
  5. |        100       |          100          |      100      |    100       |
  6. |        100       |          100          |      100      |    100       |
  7. |        100       |          100          |      100      |    100       |
  8. |        100       |          100          |      100      |    100       |
  9.  
  10.  



Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

el bare

  • Miembro activo
  • **
  • Mensajes: 65
  • Nacionalidad: mx
    • Ver Perfil
Re: Alguna Idea???
« Respuesta #7 en: Jueves 28 de Enero de 2010, 05:46 »
0
Que tal señores, antes que nada una disculpa por contestar hasta ahorita, tuve un pequeño problema con un malware q me dio mucha lata, pero ya lo quite del sistema... :lol:

Ahora si ya se me quitaron las dudas, no conocia el AVG, me va a ayudar bastante.... ^_^

y lo de la division entre 3, yo pense que era dividir entre el numero de registros q hubiera, pero no,... :D  siendo asi, tambien me va a ser util...... ^_^  :D

Solo me resta decirles...
Muchisimas Gracias...Anima, Tano, me han ayudado bastante..Solo resta ponerme a chambear, y en serio.... :comp:  :comp:  :D

Solamente me queda una duda, que significa el "<>"???.. :mellow:

AnimaSubtilis

  • Miembro MUY activo
  • ***
  • Mensajes: 172
  • Nacionalidad: co
    • Ver Perfil
Re: Alguna Idea???
« Respuesta #8 en: Jueves 28 de Enero de 2010, 13:38 »
0
eso es un signo menor seguido de un signo mayor no es ovio  :P  jajaja

mentiras jajaja eso es diferente....

Código: SQL
  1.  
  2. SELECT AVG(Total_Consultas + Total_Medicamentos + Total_Horas)  AS 'Promedio'
  3. FROM tabla WHERE Trimestre <> 'Promedio anual' AND ano = '2009'
  4.  
  5.  

mira te explico la consulta...... se saca el promedio de toda la tabla excepto cuando trimestre sea igual a
 'Promedio anual' es equivalente a != en C. y que el año sea = a 2009...

Bueno eso es todo........
A menudo unas pocas horas de «prueba y ensayo» podrán ahorrarte minutos de leer manuales.
[size=150]
Dios nos Otorgo el uno y el cero....y con eso creamos un universo....[/size]

[size=109]↑°°°°ÄNÍMÄ §ÛBTÍLͧ°°°°↓[/size]


F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Alguna Idea???
« Respuesta #9 en: Jueves 28 de Enero de 2010, 15:09 »
0
Cita de: "el bare"
Que tal señores, antes que nada una disculpa por contestar hasta ahorita, tuve un pequeño problema con un malware q me dio mucha lata, pero ya lo quite del sistema... :lol:

Ahora si ya se me quitaron las dudas, no conocia el AVG, me va a ayudar bastante.... ^_^

y lo de la division entre 3, yo pense que era dividir entre el numero de registros q hubiera, pero no,... :D  siendo asi, tambien me va a ser util...... ^_^  :D

Solo me resta decirles...
Muchisimas Gracias...Anima, Tano, me han ayudado bastante..Solo resta ponerme a chambear, y en serio.... :comp:  :comp:  :D

Solamente me queda una duda, que significa el "<>"???.. :mellow:

De nada a mi solo me resta decir

Tanori :D ;) ... no hay gran ahorro en 2 letras :P, no es inventado tiene un significado,





... estamos para ayudar

SQL tambien permite !=


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

el bare

  • Miembro activo
  • **
  • Mensajes: 65
  • Nacionalidad: mx
    • Ver Perfil
Re: Alguna Idea???
« Respuesta #10 en: Viernes 29 de Enero de 2010, 01:11 »
0
ajajajajajaja,como no se me ocurrio anima... :lol: ..jajaja. :lol:

Orale, entonces equivale a !=.... :D

Y tambien se puede usar el != en SQL...que bien...  :P

Bueno... ^_^  ^_^

Muchas Gracias Anima....Tanori,jejejeje,ahi ta completo.jejejejej.


Saludos Señores!!!... :hola:  :hola: