Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql计算中的Count()_Sql_Postgresql_Count - Fatal编程技术网

sql计算中的Count()

sql计算中的Count(),sql,postgresql,count,Sql,Postgresql,Count,我有一张桌子room,上面列有room\u id,hotel\u id,status。我想计算每个酒店中有多少房间的状态为1 我想这将是一个count()函数,但是如何使用它呢 我有这个: SELECT hotel_id, (SELECT count(status) FROM room WHERE room.status = '1') FROM room GROUP BY hotelID 但是它统计所有状态为1的酒店的所有房间,我需要每个酒店的所有房间。您需要条件聚合。即在聚合函数中嵌套cas

我有一张桌子
room
,上面列有
room\u id
hotel\u id
status
。我想计算每个酒店中有多少房间的
状态为
1

我想这将是一个
count()
函数,但是如何使用它呢

我有这个:

SELECT hotel_id, (SELECT count(status) FROM room WHERE room.status = '1')
FROM room
GROUP BY hotelID

但是它统计所有状态为1的酒店的所有房间,我需要每个酒店的所有房间。

您需要条件聚合。即在聚合函数中嵌套
case
语句:

select hotel_id, sum(case when status = 1 then 1 else 0 end) as status1
from room
group by hotelID;
案例
根据状态返回
0
1
。然后,
sum()
将它们全部相加。如果要使用
count()
,可以删除
else
子句(或使用
else NULL
):


我更喜欢使用
sum()

的方法,您需要条件聚合。即在聚合函数中嵌套
case
语句:

select hotel_id, sum(case when status = 1 then 1 else 0 end) as status1
from room
group by hotelID;
案例
根据状态返回
0
1
。然后,
sum()
将它们全部相加。如果要使用
count()
,可以删除
else
子句(或使用
else NULL
):


我更喜欢使用
sum()

select hotel_id, 
  (select count(status) from room sr where sr.status='1' and sr.hotel_id = room.hotelID) 
from room
group by hotelID

您需要过滤掉其余的结果:

select hotel_id, 
  (select count(status) from room sr where sr.status='1' and sr.hotel_id = room.hotelID) 
from room
group by hotelID

和sr.hotel\u id=room.hotelID
通过使用它可以确保它将检查每个hotelID?它是一个子查询,将对结果的每一行执行。我在where子句中添加了只计算与当前行相关的hotel_id的值。
和sr.hotel_id=room.hotelID
通过使用该值,它可以确保检查每个hotelID?它是一个子查询,将对结果的每一行执行。我在where子句中添加了只计算与当前行相关的hotel_id。