每种房型和总房数如何计算?

Posted

技术标签:

【中文标题】每种房型和总房数如何计算?【英文标题】:How to count the number of each type of room and total room? 【发布时间】:2016-02-06 09:48:49 【问题描述】:

我的查询是这样的:

SELECT name, room_type, room_number FROM table_room

结果是这样的:

我想添加这样的描述:

Single Room : 3 Room
Double Room : 2 Room
Family Room : 1 Room
Total  : 6 room

附加信息:

Single Room 1 : Tony
Single Room 2 : Eden
Single Room 3 : Christiano
Double Room 1 : Wayne and Christina
Double Room 2 : Ryan and Jose
Family Room 1 : David, Peter and Carlo

总共:6 个房间,而不是 10 个房间

我试过了。但我还是很难。

谢谢。


确定房间数量,不是根据房型,而是根据房间号

所以根据上表的结果应该是这样的:

Single Room : 3 Room
Double Room : 2 Room
Family Room : 1 Room
Total  : 6 room

附加信息:

Single Room 1 : Tony
Single Room 2 : Eden
Single Room 3 : Christiano
Double Room 1 : Wayne and Christina
Double Room 2 : Ryan and Jose
Family Room 1 : David, Peter and Carlo

总共:6 个房间,而不是 10 个房间

对不起,如果我的问题不太清楚

非常感谢

【问题讨论】:

GROUP BY,用 Total 做一个 UNION ALL。 总是尝试在你的 rdbms 标签中包含 sql 问题 SqlServer, mysql?。某些功能并非在所有数据库上都可用。 伙计们。除非包含ORDER BY,否则无法保证结果顺序通常以您想要的顺序显示数据,但不能靠运气。如果规划器使用不同的索引或使用多个 cpu 的并行性,结果可能会改变。 您收到了一些很好的答案。要结束您的问题,请将其中一个问题标记为已接受。 【参考方案1】:

您可以通过以下方式获得所需的结果:

select room_type, count(*) as roomcount from test group by room_type
union all
select 'Total', count(*) as roomcount from test

结果:

+-------------+----------+
| room_type   | count(*) |
+-------------+----------+
| Double Room |        4 |
| Family Room |        3 |
| Single Room |        3 |
| Total       |       10 |
+-------------+----------+

您可以使用 php 检索此结果并将其格式化为您喜欢的格式。

如果您使用的是 MySQL,您甚至可以执行以下操作来直接从数据库中获取格式化输出,如下所示:

select concat(
  room_type, ' : ', roomcount,
  case when roomcount < 2 then ' Room' else ' Rooms' end
) as outputstring
from (
select room_type, count(*) as roomcount from test group by room_type
union all
select 'Total', count(*) as roomcount from test
) sub_query

结果:

+-----------------------+
| outputstring          |
+-----------------------+
| Double Room : 4 Rooms |
| Family Room : 3 Rooms |
| Single Room : 3 Rooms |
| Total : 10 Rooms      |
+-----------------------+

【讨论】:

感谢您回答我的问题。尝试检查下面的答案或上面的问题。我添加了其他信息。 附加信息在哪里?你有一张桌子,可以告诉谁在双人房,谁在家庭房? @mosestoh 您需要进一步的帮助吗?如果您对此处提供的任何答案感到满意,您能否接受一个并结束您的问题?【参考方案2】:

使用countgroup by

SELECT count(*) as total,room_type FROM table_room group by 
room_type

对于整个房间:-

 SELECT count(*) as total_room FROM table_room 

在单个查询中:-

SELECT count(*) as total,room_type,
(SELECT count(*) FROM table_room) as total_room FROM table_room group by 
room_type

【讨论】:

您的脚本会出错,因为您既没有使用 name 列,也没有将其包含在 group by 子句中,也没有聚合它。【参考方案3】:
select room_type, count(*) as roomcount from test group by room_type
UNION
select 'Total' as room_type , count(*) as roomcount from test

希望这会有所帮助。

【讨论】:

【参考方案4】:

SQL Fiddle

SELECT room_type, COUNT(*) AS total
FROM table_room
GROUP BY room_type
UNION ALL
SELECT 'Total' AS room_type, COUNT(*) AS total
FROM table_room;

【讨论】:

【参考方案5】:

取决于你的rdbms,你可以在返回之前构造字符串

我包含一列 order_id,以便我可以订购并在最后一行显示 total

SELECT * 
FROM (
  SELECT 1 order_id, room_type + ': ' +  Count(*) + ' Room' as desc
  FROM table_room
  GROUP BY room_type
  UNION ALL
  SELECT 2 order_id, 'Total : ' +  Count(*) + ' Room' as desc
  FROM table_room
)
ORDER BY order_id

注意:除非包含ORDER BY

,否则您无法保证结果顺序

注意 2: 最好的方法是让您的查询仅返回组总数

| Double Room |        4 |
| Family Room |        3 |
| Single Room |        3 |

并在 php UI 中计算总数。这样您的查询只有一种类型的数据,不必担心顺序

【讨论】:

以上是关于每种房型和总房数如何计算?的主要内容,如果未能解决你的问题,请参考以下文章

使用 IOS 计算延迟时间和总动画时间

如何通过C程序知道nfs共享上的可用空间和总空间?

Django - 房间模型需要选择多种房型。一个房间必须至少有一个预定义选择的房型

FastReport用Groupheader分组后如何计算,每个组的页数?

如何摆脱数据透视表中的总行和总列

如何获得char *(char数组)的真实长度和总长度?