Календарь

Автор adi_den2013, 24 февраля 2014, 12:28

0 Пользователи и 1 гость просматривают эту тему.

adi_den2013

Есть необходимость создать и пользоваться календарем.
Таблицу я создала (см. скрин)
Теперь пытаюсь, например подсчитать количество рабочих дней в месяце (d1+d2+...+d31) и что-то не соображу как это сделать SELECT'ом  :roll:

Преобразовать пустые поля в 1 через NVL, а потом?

[вложение удалено Администратором]
Яна (in real)

adi_den2013

Нашла.

SELECT "num_month", LENGTH(REPLACE(
(
nvl("d1",'1')|| nvl("d2",'1')||nvl("d3",'1')||nvl("d4",'1')||nvl("d5",'1')||nvl("d6",'1')||nvl("d7",'1')||nvl("d8",'1')||
nvl("d9",'1')||nvl("d10",'1')||nvl("d11",'1')||nvl("d12",'1')||nvl("d13",'1')||nvl("d14",'1')||nvl("d15",'1')||nvl("d16",'1')||nvl("d17",'1')||nvl("d18",'1')||
nvl("d19",'1')||nvl("d20",'1')||nvl("d21",'1')||nvl("d22",'1')||nvl( "d23",'1')||nvl("d24",'1')||nvl("d25",'1')||nvl("d26",'1')||nvl("d27",'1')||nvl("d28",'1')||
nvl("d29",'1')||nvl("d30",'1')||nvl("d31",'1')
),'X','')) as FRASE
FROM "raspisanie"."public"."calendar" AS "calendar" WHERE "num_month" = 1;


[вложение удалено Администратором]
Яна (in real)

JohnSUN

Яна, это точно ты? Или какие-то тролли твой аккаунт взломали?
Та adi_den2013, которую я знаю не первый день, не стала бы такое делать... Ну, разве что, поздравили мужчин и решили потом немного поработать...

Что и как ты собираешься дальше делать с этой таблицей?
Каким образом собираешься избежать 31 июня или, скажем, три раза и один раз отметить проскочить 29 февраля?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

adi_den2013

#3
Владислав, увы, это точно я.

Кстати с прошедшим праздником тебя и всех мужчин-пользователей этого форума  :)!

Насколько мне приходилось сталкиваться с календарями, созданными в DBF-файлах, их пользователи в начале года предварительно редактировали, приводя в соответствие с графиком работы предприятия.

Мое представление сейчас такое:

Х-выходной, праздничный
U-не существует в природе

остальное-рабочие дни

[вложение удалено Администратором]
Яна (in real)

JohnSUN

Спасибо за поздравления!

Ну, хорошо... Забили мы все эти дни в таблицу - что дальше? На какие вопросы должна отвечать эта таблица? "Сколько дней было обычных, а сколько считать работой в выходные дни для сотрудника отработавшего непрерывно, ежедневно с 14/02/2014 по 25/02/2014"? Или какие-то другие?
Помимо "совсем выходных" и "полностью рабочих" дней случаются, например, "сокращенные предпраздничные дни". Если мы сотрудника считаем просто по дням - не вопрос, а если у кого-то почасовка, то уже проблема...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

adi_den2013

#5
Здесь вопрос в другом (не деньги/зарплата, не учет рабочего времени). Планируется использование данного календаря для составления расписания занятий по вузу. Входных данных много (учебные планы/часы, специальности, количество студентов в группе, наличие мультимедиа в аудиториях и куча еще всего). Но "печка", от которой все должно отталкиваться, я считаю, это календарь.

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

Если знаешь, как обустроить его лучше, скажи. С благодарностью приму.
Яна (in real)

CyberDaemon

Цитата: adi_den2013 от 25 февраля 2014, 11:56
Здесь вопрос в другом (не деньги/зарплата, не учет рабочего времени). Планируется использование данного календаря для составления расписания занятий по вузу. Входных данных много (учебные планы/часы, специальности, количество студентов в группе, наличие мультимедиа в аудиториях и куча еще всего). Но "печка", от которой все должно отталкиваться, я считаю, это календарь.

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

Если знаешь, как обустроить его лучше, скажи. С благодарностью приму.
А что значит U-несуществует в природе. Это как понимать?

adi_den2013

30,31 февраля
31 апреля,июня,сентября и ноября
Яна (in real)

CyberDaemon

Цитата: adi_den2013 от 25 февраля 2014, 13:08
30,31 февраля
31 апреля,июня,сентября и ноября
А таких таблиц сколько буде? Для каждой группы, или для каждого преподователя по таблице?

adi_den2013

Календарь один для всех. Расписание по специальностям.
Яна (in real)

CyberDaemon

Цитата: adi_den2013 от 25 февраля 2014, 13:41
Календарь один для всех. Расписание по специальностям.
А как Вы в одном калентре собираетесь разместить расписание по нескольким специальностям(и сколько таких специальностей)?

adi_den2013

Календарь справочная информация.

Расписание будет в другой таблице. Вернее - таблицах. Много специальностей. Начну с одной.
Яна (in real)

JohnSUN

Точного однозначного ответа на вопрос "как обустроить его лучше" - нет.
Но я бы развалил все данные по календарю на две таблицы констант - исключения из рабочих дней (праздники) и исключения из выходных дней (например, переносы рабочих дней на выходные). Для самих дат, для каждой из них, использовал бы проверки:
1. стандартной функцией вычислял день недели (суббота-воскресенье/другие дни)
2. если входит в (exist in) исключения по рабочим дням - выходной (Х)
3. если входит в исключения из выходных дней - рабочий ('' или NULL)

Для получения всего календаря использовал бы представление (муторно, но возможно) или хранимую процедуру с параметрами "дата с" и "дата по", из которых можно было бы получать "плоскую" таблицу день за днём:
Дата    День недели Рабочий день
01.01.2014 3 TRUE
02.01.2014 4 FALSE
03.01.2014 5 FALSE
04.01.2014 6 TRUE
05.01.2014 7 TRUE
06.01.2014 1 FALSE
07.01.2014 2 FALSE
08.01.2014 3 FALSE
09.01.2014 4 FALSE
10.01.2014 5 FALSE
11.01.2014 6 TRUE
12.01.2014 7 TRUE
13.01.2014 1 FALSE
14.01.2014 2 FALSE
15.01.2014 3 FALSE
16.01.2014 4 FALSE
17.01.2014 5 FALSE
18.01.2014 6 TRUE
19.01.2014 7 TRUE
20.01.2014 1 FALSE... и т.д.
И уже к данным из этого набора вязал бы расписания и прочее...
Кстати, обрати внимание - вместо Х U и пустой ячейки лучше использовать более подходящий по смыслу задачи тип BOOLEAN

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

adi_den2013

Сложновато. Нужно подумать...

Не представляю реализацию такого варианта в форме для редактирования пользователем. Допустим кончился год и......? Либо я напортачила с праздниками потому, что правительство решило лишить нас, например, 8-марта.
Яна (in real)

adi_den2013

Если свободный, поделитесь ссылкой. Буду благодарна.
Яна (in real)