Access - consulta count con condiciones

 
Vista:
Imágen de perfil de Juan Jose
Val: 3
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

consulta count con condiciones

Publicado por Juan Jose (9 intervenciones) el 16/07/2023 19:47:15
Hola a todos:

Estoy creando una consulta en la que aparezcan el numero de clientes agrupados por dia, y a su vez en otra columna el numero de clientes agrupados por dia , pero que cumplan el criterio de estar alojados en las habitaciones entre la 101 y la 111.

Esta es la tabla con la consulta.

Screenshot_1

y esta es la consulta sql :

1
2
3
4
5
SELECT PARTE_VIAJERO.Fecha_Entrada, Count(PARTE_VIAJERO.Documento_Cliente) AS CLIENTES, Count(PARTE_VIAJERO.Num_Habitacion) AS HOTEL
FROM PARTE_VIAJERO
GROUP BY PARTE_VIAJERO.Fecha_Entrada
HAVING (((Count(PARTE_VIAJERO.Num_Habitacion)) Between 101 And 111))
ORDER BY PARTE_VIAJERO.Fecha_Entrada DESC;

pero no me devuelve ningun resultado.

Que esoy haciendo mal?

Alguna Ayuda?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

consulta count con condiciones

Publicado por Anonimo (3316 intervenciones) el 17/07/2023 01:03:55
Las condición tal como esta aplicada, engloba a toda la consulta, no se puede obtener el agrupado en conjunto y a la vez el de un subgrupo de habitaciones (al menos con una condición sobre todo el conjunto).

Primero verifica que la agrupación por día funciona, después se creará un campo calculado y se podrán sumar/contar los que cumpliesen la condición de pertenecer al subconjunto.

Una forma de conocer si hay elementos que cumplan la condición:
1
Num_Habitacion Between 101 And 111

Si se cumple devuelve un TRUE (-1) y si no se cumple un FALSE (0) por lo que deberá funcionar cualquiera de las formulas:

1
2
Sum(Num_Habitacion Between 101 And 111)
Count(Num_Habitacion Between 101 And 111)

Se aplicaria así:
Antes
1
Hotel: Num_Habitacion

Después
1
Hotel: Count(Num_Habitacion Between 101 And 111)

Si se utiliza la suma (y dado que suma negativos)
1
Hotel: Abs(Sum(Num_Habitacion Between 101 And 111))

Tambien así
1
Hotel: Sum(Num_Habitacion Between 101 And 111) * -1

Ante todo (y antes de calcular las habitaciones de la primera planta) verifica que devuelve resultados (la agrupación diaria), después se añade el calculo de las ocupadas (día a día) en la primer planta (y eliminar la condición global : Entre 101 y 111 pues se aplica de forma independiente).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Juan Jose
Val: 3
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

consulta count con condiciones

Publicado por Juan Jose (9 intervenciones) el 17/07/2023 14:29:08
Gracias por la respuesta pero no consigo aplicar el criterio de planta y a la vez que me muestre el resultado agrupado por dias.

Ejecuto esta sentencia
1
2
3
4
SELECT PARTE_VIAJERO.Fecha_Entrada, Count(PARTE_VIAJERO.Documento_Cliente) AS CLIENTES, Count(Num_Habitacion Between 101 And 111) AS HOTEL
FROM PARTE_VIAJERO
GROUP BY PARTE_VIAJERO.Fecha_Entrada
ORDER BY PARTE_VIAJERO.Fecha_Entrada DESC;

y me aparece este resultado.

Screenshot_1

Hace la suma agrupada pero no distingue entre alojamientos .

Creo que deberia usar la sentencia having
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

consulta count con condiciones

Publicado por Anonimo (3316 intervenciones) el 17/07/2023 14:50:08
Utiliza la SUMA y compara resultados.

Hay un método que daría el resultado correcto, pero es gravoso en recursos, en lugar de SUM utilizar DSum (una función).

También esta la posibilidad de hacer dos consultas y aunarlas (una consulta suma las ocupaciones de la primera planta, la otra las del día) se juntan en una en base al campo común (la fecha).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Juan Jose
Val: 3
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

consulta count con condiciones

Publicado por Juan Jose (9 intervenciones) el 17/07/2023 15:06:27
Gracias, creo que ya lo tengo:

con esta expresion.

1
2
3
4
SELECT PARTE_VIAJERO.Fecha_Entrada, Count(PARTE_VIAJERO.Documento_Cliente) AS CLIENTES, Sum(PARTE_VIAJERO.Num_Habitacion Between 101 And 111) * -1 AS HOTEL
FROM PARTE_VIAJERO
GROUP BY PARTE_VIAJERO.Fecha_Entrada
ORDER BY PARTE_VIAJERO.Fecha_Entrada DESC;

me da este resultado..

Screenshot_2

y gracias por todo,

ya lo ultimo me podria explicar que realiza esa sentencia , entiendo que hace la suma de todos los elementos que cumple la condicion , pero no se lo que significa el *-1

1
Sum(PARTE_VIAJERO.Num_Habitacion Between 101 And 111) * -1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

consulta count con condiciones

Publicado por Anonimo (3316 intervenciones) el 17/07/2023 17:28:31
La duda es sencilla de resolver: solo hay que quitarlo (o volver a leer el mensaje que aclara la causa)

............. Si se cumple devuelve un TRUE (-1) y si no se cumple un FALSE (0) ...........
............ Si se utiliza la suma (y dado que suma negativos)

A continuación dos opciones
ABS ==> devuelve el valor absoluto, esto es sin signo
¿Las reglas matemáticas? (se aúnan dos).

A)
- Cualquier numero que se multiplique por la unidad ==>> no varia

B)
.- El producto de (+) x (-) ==> (-)
.- El producto de (+) x (+) ==> (+)
.- El producto de (-) x (-) ==> (+)
.- El producto de (-) x (+) ==> (-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Juan Jose
Val: 3
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

consulta count con condiciones

Publicado por Juan Jose (9 intervenciones) el 19/07/2023 00:34:33
Magnífica explicación, gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar