Подсчет дней Biz для каждой строки базы данных - PullRequest
0 голосов
/ 02 марта 2020

У меня есть таблица с каждой строкой, содержащей дату начала и окончания, с форматом отметки времени, и мне нужно отфильтровать их по количеству рабочих дней между датой начала и окончания.

На основе некоторых опубликованных решений здесь я создал отдельную таблицу со всеми днями и пометил их логическим полем, например:

CREATE TABLE tbl_holiday (h_date TIMESTAMP, is_holiday BOOLEAN)

Можно ли написать запрос, который фильтрует по количеству дней между start_date и date_date, в котором _is_holiday имеет значение False ?

Моя база данных - Импала.

1 Ответ

0 голосов
/ 02 марта 2020

Обычно вы объединяете исходную таблицу с таблицей выходных с условиями неравенства на дату начала и окончания, агрегируете и, наконец, фильтруете в предложении having по сумме рабочих дней относительно целевого значения:

select t.id, t.start_date, t.end_date
from mytable t
inner join tbl_holiday h on h.hdate between t.start_date and t.end_date
group by t.id, t.start_date, t.end_date
having sum(cast(is_holiday as int)) = :no_of_business_days
...