预订表
id status
1 booked
1 booked
3 cancelled
2 cancelled
2 booked
1 cancelled
1 cancelled
1 booked
select id, count(status) as tot_cancel
from tbl_booking
where id=1 and status='cancelled';
结果将是
id tot_cancel
1 2
但是我需要用户ID = 1的最后5条记录,并且已取消的计数未取消总表记录]
我知道您希望在用户1的最后5条记录中计数已取消的记录。这是可能的,但是您需要一列来定义行的顺序,因此哪些记录是明确的last 。
假设这样的列存在于您的表中并称为ordering_id
,则可以执行以下操作:
select sum(status = 'cancelled') no_cancelled
from (select status from mytable where id = 1 order by ordering_id desc limit 5) t
您可以使用limit
子句进行条件聚合:
select 1 as id, sum(status = 'cancelled')
from table t
where id = 1
order by ? -- use sequence column instead
limit 5;