是否可以编写PostgreSQL代码来查看样本中的样本数据,从而仅选择在整个第一季度(01/01/2018至03/31/2018)内都处于活动状态的人员,如所需输出所示?请注意,不应选择人H,因为他们缺少1月。
样本数据
Person Start Date End Date
A 1/1/2018 1/31/2018
A 2/1/2018 2/28/2018
A 3/1/2018 3/31/2018
B 1/1/2018 2/28/2018
C 1/1/2018 2/28/2018
C 3/1/2018 3/31/2018
D 2/1/2018 3/31/2018
E 2/1/2018 2/28/2018
F 1/1/2018 3/31/2018
G 1/1/2018 4/30/2018
H 2/1/2018 4/30/2018
所需的输出
Person
A
C
F
G
答案 0 :(得分:2)
假设您的列是正确的DATE列,并且没有重叠,则可以执行以下操作:
select person
from the_table
group by person
having sum(end_date - start_date + 1) >= date '2018-03-31' - date '2018-01-01' + 1
order by person;
从另一个date
中减去一个List<Sale> s = GetSalesFromDatabaseMethod();
List<SaleDTO> sa = s.Select(item => (Sale) item).ToList();
,得出两个日期之间的天数。然后将所有差异的总和与该季度的开始日期和结束日期之间的差异进行比较。