русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Написать запрос, который выдает 366 строк – дат с 1-янв-2012 до 31-дек-2012.


Дата добавления: 2015-08-31; просмотров: 739; Нарушение авторских прав


 

Воспользуемся иерархическим запросом, соединив dual саму с собой 366 раз:

select to_date('31.12.2011', 'DD.MM.YYYY') + level

from dual

connect by level <= 366;

 

Такой календарь полезен в быту и народном хозяйстве.

Задача. Детальный календарь.

Создать таблицу-календарь на 2000-2020 годы со следующими полями: дата, день месяца, месяц, год, номер дня недели, день недели, номер недели в месяце, номер недели в году:

 

Напишем запрос, обратим внимание, что взгляд Oracle на то, как считать номер недели в месяце и номер недели в году, не всем нравится, поэтому предложим еще и альтернативную версию:

select dt,

to_char(dt, 'DD') day,

to_char(dt, 'MONTH') month_code,

to_char(dt, 'YYYY') year,

to_char(dt, 'D') day_of_week,

to_char(dt, 'DAY') day_of_week_code,

to_char(dt, 'W') week_of_month_oracle,

ceil((trunc(dt, 'IW') + 7 - trunc(dt, 'MM')) / 7) week_of_month_alternative,

to_char(dt, 'IW') week_of_year_oracle,

ceil((trunc(dt, 'IW') + 7 - trunc(dt, 'YYYY')) / 7) week_of_year_alternative

from (select to_date('31.12.1999', 'DD.MM.YYYY') + level dt, level lvl

from dual

connect by level <= 7671);

Задача. Календарь с индикаторами выходных дней.

Дана таблица со списком выходных дней 2012 года, в которой учитываются праздники и переносы выходных дней. С помощью иерархического запроса создать календарь на 2012 год со столбцом, представляющим собой индикатор суббот и воскресений, а также столбцом, представляющим собой индикатор нерабочих дней. Индикаторные поля принимают значение 0 или 1.

 

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

create table kk_holidays_list(operdate date);

insert into kk_holidays_list(operdate) values(to_date('01.01.2012', 'dd.mm.yyyy'));



insert into kk_holidays_list(operdate) values(to_date('02.01.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('03.01.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('04.01.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('05.01.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('06.01.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('07.01.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('08.01.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('09.01.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('14.01.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('15.01.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('21.01.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('22.01.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('28.01.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('29.01.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('04.02.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('05.02.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('11.02.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('12.02.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('18.02.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('19.02.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('23.02.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('25.02.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('26.02.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('03.03.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('04.03.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('08.03.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('09.03.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('10.03.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('17.03.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('18.03.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('24.03.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('25.03.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('31.03.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('01.04.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('07.04.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('08.04.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('14.04.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('15.04.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('21.04.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('22.04.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('29.04.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('30.04.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('01.05.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('06.05.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('07.05.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('08.05.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('09.05.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('13.05.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('19.05.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('20.05.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('26.05.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('27.05.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('02.06.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('03.06.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('10.06.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('11.06.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('12.06.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('16.06.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('17.06.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('23.06.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('24.06.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('30.06.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('01.07.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('07.07.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('08.07.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('14.07.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('15.07.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('21.07.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('22.07.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('28.07.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('29.07.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('04.08.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('05.08.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('11.08.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('12.08.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('18.08.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('19.08.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('25.08.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('26.08.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('01.09.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('02.09.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('08.09.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('09.09.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('15.09.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('16.09.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('22.09.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('23.09.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('29.09.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('30.09.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('06.10.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('07.10.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('13.10.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('14.10.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('20.10.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('21.10.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('27.10.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('28.10.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('03.11.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('04.11.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('05.11.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('10.11.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('11.11.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('17.11.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('18.11.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('24.11.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('25.11.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('01.12.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('02.12.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('08.12.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('09.12.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('15.12.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('16.12.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('22.12.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('23.12.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('29.12.2012', 'dd.mm.yyyy'));

insert into kk_holidays_list(operdate) values(to_date('30.12.2012', 'dd.mm.yyyy'));

 

Соединим простой календарик за 2012 год, указанный в подзапросе q1, со списком выходных kk_holidays_list. Будем использовать left join.

is_weekend = 1 для дней недели номер 6 и 7. is_holiday = 1 для дат из справочника выходных kk_holidays_list:

 

select dt,

decode(to_char(q1.dt, 'D'), '6', '1', '7', '1', '0') is_weekend,

decode(h.rowid, null, 0, 1) is_holiday

from (select to_date('31.12.2011', 'DD.MM.YYYY') + level dt

from dual

connect by level <= 366) q1

left join kk_holidays_list h

on q1.dt = h.operdate

order by q1.dt;



<== предыдущая лекция | следующая лекция ==>
Задача. Сумма зарплат подчиненных. | U - unique constraints


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.404 сек.