none
CALCULAR PORCENTAJE POR DIA RRS feed

  • Pregunta

  • Hola,

    uso sql 2000 y quiero sacar el porcentaje de habitaciones ocupadas por dia en un hotel, o sea las que estan actualmente ocupadas y las que estaran en el futuro dependiendo de las reservas hechas.

    Ejemplo: hay 10 habitaciones en total y hoy 5 estan ocupadas,por lo que tengo 50% de ocupacion.

                   para mañana hay estaran las mismas 5 mas 2 reservas mas, asi que tendre 70%.

    tengo la tabla "habitaciones" con su campo "id_habitacion",de donde cuento el numero total de habitaciones.

    Y la tabla "reservas": (idreserva(int),fechaini(smalldate),fechafin(smalldate),estado_habitacion(int)).

    Cuando una habitacion esta ocupada ESTADO_HABITACION es =1, una reserva es estado=2. De esta manera pretendo contarlas.Pero no se como calcular el porcentaje de ocupacion por dia para un rango de fechas. 

    ojala me ayuden

    gracias 

    jueves, 12 de marzo de 2015 18:25

Respuestas

  • El porcentaje de ocupación sería (Habitaciones Ocupadas)/(Habitaciones totales)*100. Cada una de las dos partes entre paréntesis la puedes obtener mediante una subconsulta. En resumidas cuentas, la ocupación de un día concreto se obtendría de forma parecida a lo siguiente:

    declare @Dia DATE = '20150515'
    select @dia as Dia, 100.0*(select count(*) from reservas where @dia between fechaini and fechafin and estado_habitacion in (1,2))/(Select Count(*) from habitaciones) as PorcentajeOcupacion

    Esa consulta vale para un día. Si quieres repetirla para un rango de fechas, sería conveniente disponer de una tabla de Fechas, parecida al típico DimDate que se suele usar en los cubos OLAP. Una vez que tengas la tabla de fechas, haces una query sobre ella que te extraiga todos los días del rango deseado, y presentas el porcentaje mediante una subconsulta correlacionada que sea precisamente la que te puse arriba, pero en lugar de usar @dia correlacionar ese dato con el obtenido de la tabla DimDate. Alternativamente, puedes usar un bucle para generar las fechas, en lugar de una tabla, pero entonces ya no es una única consulta sino un conjunto de operaciones.

    jueves, 12 de marzo de 2015 19:09