关注原始问题PostgreSQL Data Selection
如果end_date数据并非总是到月底,是否可以修改查询,以便不选择人“ I”,因为他们在整个2018年第一季度都没有空?链接到以下代码:https://rextester.com/UDQ96726
drop table if exists the_table cascade;
create table the_table (person text, start_date date, end_date date);
insert into the_table
values
('A', date '2018-01-01', date '2018-01-31'),
('A', date '2018-02-01', date '2018-02-28'),
('A', date '2018-03-01', date '2018-03-31'),
('B', date '2018-01-01', date '2018-02-28'),
('C', date '2018-01-01', date '2018-02-28'),
('C', date '2018-03-01', date '2018-03-31'),
('D', date '2018-02-01', date '2018-03-31'),
('E', date '2018-02-01', date '2018-02-28'),
('F', date '2018-01-01', date '2018-03-31'),
('G', date '2018-01-01', date '2018-04-30'),
('H', date '2018-02-01', date '2018-04-30'),
('I', date '2017-01-01', date '2018-03-29');
select person
from the_table
group by person
having sum(end_date - start_date + 1) >= '2018-03-31' - date '2018-01-01' + 1
order by person;