Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Obtener frecuencia de un numero

Estas en el tema de Obtener frecuencia de un numero en el foro de SQL Server en Foros del Web. Hola gente Estoy haciendo un pequeño proyecto para la facultad, pero estoy perdido con algo que no se como hacerlo, estoy trabajando con MS-SQL 2008. ...
  #1 (permalink)  
Antiguo 07/04/2016, 08:44
 
Fecha de Ingreso: enero-2015
Ubicación: en mi casa
Mensajes: 15
Antigüedad: 9 años, 9 meses
Puntos: 0
Obtener frecuencia de un numero

Hola gente

Estoy haciendo un pequeño proyecto para la facultad, pero estoy perdido con algo que no se como hacerlo, estoy trabajando con MS-SQL 2008.

Lo que quiero sacar es cada cuanto sale o se repite un numero, osea, quiero calcular la frecuencia de un numero.

Mi tabla es la siguiente:

Id -> int
fecha -> date
Nro1 => varchar
Nro2 => varchar
Nro3 => varchar
Nro4 => varchar
Nro5 => varchar
Nro6 => varchar

Lo que estoy queriendo saber es cada cuantos dias se repite, por ejemplo, el numero 10, que puede salir en cualquiera de las 6 columnas...no busco saber la diferencia entre 2 fechas, o entre la primera y ultima fecha, busco que la query me diga algo como esto:

Nro Frencuencia Porcentaje
10 5 (dias) xx% (el porcentaje de veces que se repite)

Me podran ayudar, por favor, con lo que estoy buscando?

Muchisimas gracias
  #2 (permalink)  
Antiguo 07/04/2016, 08:46
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Obtener frecuencia de un numero

Y como se calcula la frecuencia??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 07/04/2016, 08:47
 
Fecha de Ingreso: enero-2015
Ubicación: en mi casa
Mensajes: 15
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Obtener frecuencia de un numero

Eso es justamente lo que no se hacer, por eso recurro a la ayuda del foro...

Soy nuevo en sql...

GRACIAS

Cita:
Iniciado por Libras Ver Mensaje
Y como se calcula la frecuencia??
  #4 (permalink)  
Antiguo 07/04/2016, 08:49
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Obtener frecuencia de un numero

No hay funcion en sql q calcule la frecuencia, en terminos matematicos como se hace dicho calculo??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 07/04/2016, 08:58
 
Fecha de Ingreso: enero-2015
Ubicación: en mi casa
Mensajes: 15
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Obtener frecuencia de un numero

Por ejemplo, tomando los siguientes numeros:

18, 13, 12, 14, 11, 08, 12, 15, 05, 20, 18, 14, 15, 11, 10, 10, 11, 13.

Podemos decir lo siguiente:

-La frecuencia absoluta de 11 es 3, pues 11 aparece 3 veces.

-La frecuencia relativa de 11 es 0.17, porque corresponde a la división 3/18 (3 de las veces que aparece de las 18 notas que aparecen en total).

Cita:
Iniciado por Libras Ver Mensaje
No hay funcion en sql q calcule la frecuencia, en terminos matematicos como se hace dicho calculo??
  #6 (permalink)  
Antiguo 07/04/2016, 09:24
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Obtener frecuencia de un numero

No, pues es una super funcion, pero muy personal
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 07/04/2016, 09:45
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Obtener frecuencia de un numero

La verdad para ese tipo de calculos no recomiendo sql, seria mejor q ese calculo lo hicieras con algun lenguaje de programacion, no q no se pueda con sql, sino q sql no esta diseñado para trabajar con formulas matematicas ni calculos complejos
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 07/04/2016, 09:59
 
Fecha de Ingreso: enero-2015
Ubicación: en mi casa
Mensajes: 15
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Obtener frecuencia de un numero

Tengo la siguiente query para sacar frecuencia relativa y absoluta:

Código SQL:
Ver original
  1. /*---------------*/
  2. DECLARE @Muestra TABLE (Numero INT);
  3. INSERT INTO @Muestra VALUES
  4.     (18), (13), (12), (14), (11), (8), (12), (15), (05), (20), (18), (14), (15), (11), (10), (10), (11), (13);
  5.  
  6. SELECT
  7.     Numero,
  8.     COUNT(*) [Frecuencia absoluta],
  9.     (COUNT(*) * 0.1) / (SELECT COUNT(*) FROM @Muestra) [Frecuencia relativa]    
  10. FROM
  11.     @Muestra
  12. GROUP BY
  13.     Numero
  14. /*---------------*/

Pero lo que necesito saber es cada cuantos dias, sale un numro determinado...

Cita:
Iniciado por Libras Ver Mensaje
La verdad para ese tipo de calculos no recomiendo sql, seria mejor q ese calculo lo hicieras con algun lenguaje de programacion, no q no se pueda con sql, sino q sql no esta diseñado para trabajar con formulas matematicas ni calculos complejos

Última edición por gnzsoloyo; 07/04/2016 a las 13:00
  #9 (permalink)  
Antiguo 07/04/2016, 10:02
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Obtener frecuencia de un numero

Es donde entra un poco la dificultad de tu proceso, se podria obtener primero cuale es el numero que mas se repite en la frecuencia, y despues con ese numero saber que dias se repitio algo como esto:

Código SQL:
Ver original
  1. DECLARE @Muestra TABLE (Numero INT, fecha datetime);
  2. INSERT INTO @Muestra VALUES
  3. (18,getdate()+1), (13,getdate()+2), (12,getdate()+3), (14,getdate()+4), (11,getdate()+5), (8,getdate()+6), (12,getdate()+8), (15,getdate()+9), (05,getdate()+10), (20,getdate()+11), (18,getdate()+12), (14,getdate()+13), (15,getdate()+14), (11,getdate()+15), (10,getdate()+16), (10,getdate()+17), (11,getdate()+18), (13,getdate()+19);
  4.  
  5. SELECT top 1 numero INTO #temp FROM(
  6. SELECT COUNT(*) total, numero FROM @Muestra GROUP BY numero
  7. ) AS t1 ORDER BY total DESC
  8.  
  9. SELECT numero,fecha, datediff(dd,getdate(),fecha) AS dif_dias FROM @muestra WHERE numero IN (SELECT * FROM #temp)

Resultado:
numero fecha dif_dias
11 2016-04-12 09:19:54.377 5
11 2016-04-22 09:19:54.377 15
11 2016-04-25 09:19:54.377 18

No se si sea lo que buscas......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 07/04/2016 a las 10:17
  #10 (permalink)  
Antiguo 07/04/2016, 12:10
 
Fecha de Ingreso: enero-2015
Ubicación: en mi casa
Mensajes: 15
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Obtener frecuencia de un numero

Muchas gracias!!!
Dejame probarlo, y te cuento como fue!
Saludos, gracias!

Cita:
Iniciado por Libras Ver Mensaje
Es donde entra un poco la dificultad de tu proceso, se podria obtener primero cuale es el numero que mas se repite en la frecuencia, y despues con ese numero saber que dias se repitio algo como esto:

Código SQL:
Ver original
  1. DECLARE @Muestra TABLE (Numero INT, fecha datetime);
  2. INSERT INTO @Muestra VALUES
  3. (18,getdate()+1), (13,getdate()+2), (12,getdate()+3), (14,getdate()+4), (11,getdate()+5), (8,getdate()+6), (12,getdate()+8), (15,getdate()+9), (05,getdate()+10), (20,getdate()+11), (18,getdate()+12), (14,getdate()+13), (15,getdate()+14), (11,getdate()+15), (10,getdate()+16), (10,getdate()+17), (11,getdate()+18), (13,getdate()+19);
  4.  
  5. SELECT top 1 numero INTO #temp FROM(
  6. SELECT COUNT(*) total, numero FROM @Muestra GROUP BY numero
  7. ) AS t1 ORDER BY total DESC
  8.  
  9. SELECT numero,fecha, datediff(dd,getdate(),fecha) AS dif_dias FROM @muestra WHERE numero IN (SELECT * FROM #temp)

Resultado:
numero fecha dif_dias
11 2016-04-12 09:19:54.377 5
11 2016-04-22 09:19:54.377 15
11 2016-04-25 09:19:54.377 18

No se si sea lo que buscas......

Etiquetas: frecuencia, repeticion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:29.