Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Ноябрь 21, 2017, 07:20:35 am

Автор Тема: кол-во рабочих дней между двумя датами (Qlikview, Qlik Sense)  (Прочитано 1981 раз)

Оффлайн Varvara

  • Новичок
  • *
  • Сообщений: 9
  • Рейтинг: +3/-0
    • Просмотр профиля
суть проблемы в следующем
есть 2 даты надо подсчитать кол- во дней межу этими датами которые были рабочими, т.е. исключить кол- во выходных и праздничных дней

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: кол-во рабочих дней между двумя датами
« Ответ #1 : Июль 30, 2015, 05:59:57 pm »
Привет
Цитировать
Функция networkdays возвращает число рабочих дней (понедельник-пятница) между и включая значения, указанные в поле start_date и end_date, учитывая выходные, которые можно дополнительно задать в поле holiday.

описание функции networkdays
Если используются "хитрые графики", то можно привязать график к календарю, проставив единички в колонке рабочих дней и затем просто подсчитать сумму с выражением Set Analysis.

Оффлайн kvv

  • Гуру
  • ***
  • Сообщений: 135
  • Страна: 00
  • Рейтинг: +36/-0
    • Просмотр профиля
Добрый день.
Также, можно почитать http://qlikview-forum.ru/qvf/index.php/topic,656.msg1353.html#msg1353.

Неофициальный форум пользователей QlikView & Qlik Sense


Оффлайн Varvara

  • Новичок
  • *
  • Сообщений: 9
  • Рейтинг: +3/-0
    • Просмотр профиля
спасибо, а можно ли в функции networkdays в параметре holidays задать не перечисление конкретных дат, а подсунуть туда некий список, в котором будут прописаны праздничные дни

Оффлайн bibis

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +31/-0
    • Просмотр профиля
Добрый день. Возможно вм проще будет создать производственный календарь вида:
Дата | Рабочий день

Во вторую колонку ставить 0 если рабочий день, 1, если не рабочий и просто считать сумму


Оффлайн Varvara

  • Новичок
  • *
  • Сообщений: 9
  • Рейтинг: +3/-0
    • Просмотр профиля
получилось вот такое решение
1) грузим таблицу праздничных дней не попадающих на выходные
LOAD * INLINE [
Праздничные даты
'01.01.2015'
'02.01.2015'
'05.01.2015'
'06.01.2015'
'07.01.2015'
'08.01.2015'
'09.01.2015'
'23.02.2015'
'09.03.2015'
'01.05.2015'
'04.05.2015'
'11.05.2015'
'12.06.2015'
'04.11.2014'
];
и пишем затем вот такую формулу

А=sum(networkdays (Дата1 ,Дата2)) - считаем кол- во дней между двумя датами без выходных

В=sum(if([Праздничные даты]>=Дата1  and Праздничные даты<=Дата2,1,0 ))) - получаем кол- во праздничных дней между 2 датами

А-В - получаем искомый результат

Оффлайн DmitryK

  • Наставник
  • **
  • Сообщений: 61
  • Страна: ru
  • Рейтинг: +20/-0
  • QlikView v.11.20
    • Просмотр профиля
Можно сделать так:

Календарь:
load * inline[
Дата
'01.01.2015'
'02.01.2015'
'03.01.2015'
'04.01.2015'
'05.01.2015'
'06.01.2015'
'07.01.2015'
'08.01.2015'
'09.01.2015'
'10.01.2015'
'11.01.2015'
'12.01.2015'
'13.01.2015'
'14.01.2015'
'15.01.2015'
'16.01.2015'
'17.01.2015'
];

left join (Календарь)
LOAD * INLINE [
Дата, ПраздничныеДаты
'01.01.2015', 1
'02.01.2015', 1
'05.01.2015', 1
'06.01.2015', 1
'07.01.2015', 1
'08.01.2015', 1
'09.01.2015', 1
];

А в выражении прописать:
count(distinct {<ПраздничныеДаты = {*}-{1}>} Дата)
Или как у Вас:
sum(if(ПраздничныеДаты=1,0,1))

Неофициальный форум пользователей QlikView & Qlik Sense