sql题 旅店房间饱满情况
时间: 2023-07-19 08:35:01 浏览: 106
您好,如果您想要统计旅店房间的饱满情况,可以使用以下 SQL 语句:
```
SELECT
COUNT(*) AS total_rooms,
SUM(CASE WHEN guest_name IS NOT NULL THEN 1 ELSE 0 END) AS occupied_rooms,
SUM(CASE WHEN guest_name IS NULL THEN 1 ELSE 0 END) AS vacant_rooms,
SUM(CASE WHEN guest_name IS NOT NULL AND check_out_date < NOW() THEN 1 ELSE 0 END) AS overdue_rooms
FROM room;
```
其中,`room` 表是包含房间信息的表,包括房间号、客人姓名、入住日期、退房日期等信息。以上 SQL 语句通过 `SUM` 函数和 `CASE WHEN` 语句来计算以下信息:
- `total_rooms`:总房间数;
- `occupied_rooms`:已经入住的房间数;
- `vacant_rooms`:空闲房间数;
- `overdue_rooms`:已经过期(即已经到了退房日期但客人仍未退房)的房间数。
您可以根据实际情况来调整 SQL 语句中的列名和表名。
相关问题
大数据sql题 旅店房间饱满情况
对于大数据场景下的旅店房间饱满情况统计,可以使用以下 Hive SQL 语句:
```
SELECT
COUNT(*) AS total_rooms,
SUM(CASE WHEN guest_name IS NOT NULL THEN 1 ELSE 0 END) AS occupied_rooms,
SUM(CASE WHEN guest_name IS NULL THEN 1 ELSE 0 END) AS vacant_rooms,
SUM(CASE WHEN guest_name IS NOT NULL AND check_out_date < NOW() THEN 1 ELSE 0 END) AS overdue_rooms
FROM room
WHERE dt = '20211201';
```
其中,`room` 表是包含房间信息的表,包括房间号、客人姓名、入住日期、退房日期等信息;`dt` 列为日期分区键,用于按照日期进行分区,以提高查询效率。
以上 SQL 语句通过 `SUM` 函数和 `CASE WHEN` 语句来计算以下信息:
- `total_rooms`:总房间数;
- `occupied_rooms`:已经入住的房间数;
- `vacant_rooms`:空闲房间数;
- `overdue_rooms`:已经过期(即已经到了退房日期但客人仍未退房)的房间数。
您可以根据实际情况来调整 SQL 语句中的列名和表名,以及日期分区键的值。此外,为了提高查询效率,可以考虑对表进行分区、索引等优化操作。
sql题 旅店房间饱满情况 分析每个时间段,有客人在住的房间数量
如果您想要分析每个时间段,有客人在住的房间数量,可以使用以下 SQL 语句:
```
SELECT
DATE_FORMAT(check_in_date, '%Y-%m-%d %H:%i') AS datetime,
COUNT(*) AS occupied_rooms
FROM room
WHERE guest_name IS NOT NULL
GROUP BY DATE_FORMAT(check_in_date, '%Y-%m-%d %H:%i');
```
其中,`room` 表是包含房间信息的表,包括房间号、客人姓名、入住日期、退房日期等信息。以上 SQL 语句通过 `DATE_FORMAT` 函数将入住日期转换为指定的时间格式,并使用 `GROUP BY` 子句按照时间段进行分组统计,最终得到每个时间段有客人在住的房间数量。
您可以根据实际情况来调整 SQL 语句中的列名和表名。此外,为了提高查询效率,可以考虑对表进行索引等优化操作。
阅读全文