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

Promedio por numero de dia entre semana

Estas en el tema de Promedio por numero de dia entre semana en el foro de SQL Server en Foros del Web. Buenas a todos mi pregunta tengo la siguiente consulta Código: select count(*) facturas,datepart(dw,fechadocumento),datepart(hh,fechadocumento) from fct where idtransaccion = 'fcn' and idsede = '01' and fechadocumento ...
  #1 (permalink)  
Antiguo 11/01/2012, 11:38
 
Fecha de Ingreso: noviembre-2010
Mensajes: 12
Antigüedad: 14 años
Puntos: 0
Promedio por numero de dia entre semana

Buenas a todos

mi pregunta tengo la siguiente consulta

Código:
select count(*) facturas,datepart(dw,fechadocumento),datepart(hh,fechadocumento)
from fct where idtransaccion = 'fcn'
and idsede = '01' and
fechadocumento > '20110101' group by datepart(dw,fechadocumento),datepart(hh,fechadocumento)
order by 2,3
en esta me muestra el total de facturas realizadas por hora y dia en la semana despues del 1 de enero del año pásado, me gustaria realizar un promedio de las que se vendieron el lunes,martes etc... mi pregunta esta en como puedo conocer el numero de lunes o ,martes etc.. que hubo en un lapso de tiempo para con esto sacar el promedio

gracias de antemano y por la atencion prestada
  #2 (permalink)  
Antiguo 11/01/2012, 11:45
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Promedio por numero de dia entre semana

Cada dia de la semana esta identificado por un numero, del 1 al 7, verifica por:

Código SQL:
Ver original
  1. SELECT DATENAME(dw, getdate())
  2. SELECT DatePart(WeekDay, GetDate())
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 11/01/2012, 13:46
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 16 años, 2 meses
Puntos: 58
Respuesta: Promedio por numero de dia entre semana

Hola que tal, bueno para obtener el dia es como te dijo iislas, para obtenerlo en español seria asi:

Código SQL:
Ver original
  1. SET LANGUAGE SPANISH -- Cambia el lenguaje a Español
  2. SELECT DATENAME(dw, getdate())
  3. SELECT DatePart(WeekDay, GetDate())
  4. SET LANGUAGE ENGLISH -- Cambia el lenguaje a Ingles

Para obtener el rango de fechas es con el BETWEEN:

Código SQL:
Ver original
  1. SELECT CONVERT(VARCHAR(10),GETDATE(),121) AS FechaValidacion
  2. WHERE CONVERT( VARCHAR(10),GETDATE(),121) BETWEEN CONVERT(VARCHAR(10),'2012-01-02',121) AND CONVERT( VARCHAR(10),'2012-01-13',121)

Comparas las fecha y el BETWEEN es para un rango de fechas.

Espero te sirva
  #4 (permalink)  
Antiguo 11/01/2012, 13:49
 
Fecha de Ingreso: noviembre-2010
Mensajes: 12
Antigüedad: 14 años
Puntos: 0
Respuesta: Promedio por numero de dia entre semana

Si eso ya lo conocía, en si en la consulta me da los datos del numero total de facturas realizadas por ejemplo a la hora 8 el dia 1, me da el total lo que yo quiero es coger ese total y realizar el promedio por el numero de días de Lunes del intervalo de tiempo definido
  #5 (permalink)  
Antiguo 12/01/2012, 14:47
 
Fecha de Ingreso: noviembre-2010
Mensajes: 12
Antigüedad: 14 años
Puntos: 0
Respuesta: Promedio por numero de dia entre semana

Buenas a todos, bueno al fin realice una funcion que dice cuantos numero de
por ejemplo Lunes hay en un rango de fechas.

Código:
CREATE   FUNCTION [dbo].[FN_DIAS_WK] (@FECHAINI DATETIME,@FECHAFIN DATETIME,@DIAWK INT)
RETURNS INT
AS  
BEGIN  
  DECLARE @DIASWK INT
  DECLARE @FECHAPUNT DATETIME
  DECLARE @BAND TINYINT
  SET @BAND = 0 
  SET @DIASWK = 0	
  SET @FECHAPUNT = @FECHAINI
  WHILE @FECHAPUNT < @FECHAFIN
	BEGIN
     IF DATEPART(DW,@FECHAPUNT) <> @DIAWK AND @BAND = 0        
		SELECT @FECHAPUNT = DATEADD(DD,1,@FECHAPUNT)
	 IF DATEPART(DW,@FECHAPUNT) = @DIAWK AND @BAND = 0
		SET @BAND = 1
	 IF @BAND = 1
		BEGIN
			SELECT @FECHAPUNT = DATEADD(DD,7,@FECHAPUNT)
			SET @DIASWK = @DIASWK + 1
		END			
	 IF @FECHAPUNT > @FECHAFIN
		BREAK
	 ELSE CONTINUE
	END	
  RETURN @DIASWK  
END
y ya en la consulta original la llamo y calculo el promedio de facturas por hora

Código:
select count(*) facturas,datepart(dw,fechadocumento),datepart(hh,fechadocumento),
count(*)/basura.dbo.FN_DIAS_WK('20110101','20120101',
datepart(dw,fechadocumento))
from fct where idtransaccion = 'fcn'
and idsede = '01' 
and idventa = 'MOSTRADOR' and
fechadocumento > '20110101' and fechadocumento < '20120101' 
group by datepart(dw,fechadocumento),datepart(hh,fechadocumento)
order by 2,3
Bueno ante todo gracias por la respuestas.

espero que esto pueda ayudar a alguien mas adelante

Etiquetas: dia, fecha, numero, promedio, select, semana
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 06:24.