如何在 SQL Server 中查询最新岛的大小?
Posted
技术标签:
【中文标题】如何在 SQL Server 中查询最新岛的大小?【英文标题】:How do I query for the size of the newest island in SQL Server? 【发布时间】:2019-05-30 18:53:43 【问题描述】:我想查询 SQL Server (Azure) 中“间隙和孤岛”问题中最后一个孤岛的大小。
假设我有下表:
ID date status
500 2019-05-15 1
528 2019-05-16 0
538 2019-05-17 0
550 2019-05-18 1
580 2019-05-19 0
590 2019-05-20 0
ID 是一个标识列 date 是一个日期列 状态为 0 或 1。
我想知道状态设置为 0 的天数。在这种情况下,今天是 2019-05-20。
如何编写查询以获取最后一个状态列的计数为 0(即 2)?
【问题讨论】:
您能详细说明您所说的天数吗?是否应该忽略以 1(按时间顺序)结尾的状态组? 【参考方案1】:您可以使用status = 1
找到最近的记录,并使用它来计算最近使用status = 0
的行数。
select
count(*) as cnt
from yourTable
where [date] > (select max([date]) from yourTable where [status] = 1)
【讨论】:
【参考方案2】:假设您要计算行数(而不是使用日期算术),那么一个安全的方法是:
select count(*) as cnt
from t
where [date] > all (select [date] from t where status = 1);
即使没有1
s,这也应该可以工作。
【讨论】:
以上是关于如何在 SQL Server 中查询最新岛的大小?的主要内容,如果未能解决你的问题,请参考以下文章