Joomla 3.1 Templates by FatCow Coupon

Подсчитать сколько воскресений , понедельников , суббот и тд в заданном году

Подсчитать количество дней недели в заданном году 
то есть сколько было в указанном году понедельников вторников воскресений ...
можно следующим образом :
   select count(1) dwcount,
          to_char(to_date('01/01/1940', 'DD/MM/YYYY') + level - 1, 'DAY') daywe -- 1940 это год , который нам нужен
     from dual
   connect by level <
              to_number(to_char(Trunc(To_Date('1940' + 1, 'YYYY'), 'YYYY') - 1, -- 1940 это год , который нам нужен
                                'ddd')) -- считаем колч дней 
    group by to_char(to_date('01/01/1940', 'DD/MM/YYYY') + level - 1, 'DAY'); -- группируем запрос по дням
 

индекс на вторичном ключе, зачем он нужен? секретные материалы архитектора СУБД

проще всего разобраться в этом на примерах
создадим две таблицы

create table tsp(n number primary key); 
-- заполним таблицу данными
insert into tsp
select level from dual connect by level < 100001;


-- создадим вторую таблицу

Подробнее...

простой и элегантный способ вставки записей в таблицу без перечисления полей

для демонстрации создадим некоторую таблицу на основе all_objects

 create table s_obj as select * from all_objects where rownum < 5


в данном случае таблица содержит 4 записи
с помощью инструкции PL SQL заполним данную таблицу следующим образом

Подробнее...

Обновление данных WHERE CURRENT OF

Если вы используете для обновления или удаления данных курсор select for update, то использование WHERE CURRENT OF
в этом случае наиболее удобно.
Выражение CURRENT как показано используется после конструкции WHERE и имеет следующий синтаксис

UPDATE имя таблицы
  SET обновляемые поля и значения
  WHERE CURRENT OF имя курсора;


для обновления данных

Рассмотрим несколько примеров:
подготовим тестовые данные

create table tab11 as select * from all_objects where rownum < 25;



обновление данных с использованием WHERE CURRNT OF

declare 
    cursor C is
    select *
      from tab11 t
     FOR UPDATE OF object_name, owner; 
begin
  FOR i in C loop
   update tab11 set object_name = 'update1' , owner = 'OW'  
   where current of C;
  end loop; 
  commit;  
end;



таким образом, мы, обновляем каждую запись нашего курсора заданным значением.

как размножить строки... cross join и connect by

итак , нам необходимо размножить строки в некоторой таблице, на основе заданного запроса 
пусть это будет следующий запрос

select object_name from all_objects where object_type = 'CLUSTER'


этот запрос вернет нам 10 строк , по условиям задачи необходимо повторить эти 10 строк по 10 раз

создадим таблицу с размноженными строками , здесь на поможет конструкция cross join и оператор иерархии connect by

Подробнее...