- •Дана символьная строка, в которой отдельные слова разделены любым количеством пробелов.
- •//Условие задачи:
- •Определить список последовательностей подчиненности от преподавателей, не имеющих начальника, до преподавателей, не имеющих подчиненных. Результат представить в виде:
- •Посчитать кол-во 29.02 между двумя заданными датами
- •Показать накопленную сумму сотрудников по их отделам.
- •Вывести все даты за 2011 год и соответствующие дни недели без использования иерархических запросов и Model.
- •В произвольной строке, состоящей из символьных элементов, разделенных запятыми, отсортировать элементы по алфавиту. Например, символьную строку
- •Определить временной интервал между заданной и текущей датами. Результат вывести в виде: ## лет ## мес ## дней, где # обозначает цифру.
- •Вывести фамилии сотрудников, начальники которых работают в другой стране.В результат вывести:
- •Для таблиц схемы, имеющих индексы вывести:
- •Определить дату начала ближайшего к заданной дате Уимблдонского турнира, который начинается за шесть недель до первого понедельника августа
- •Для каждой таблицы схемы вывести:
- •Определить сколько лет, месяцев и дней осталось до президентских выборов в сша, которые проводятся по високосным годам в первый понедельник после первого вторника ноября.
- •Дана таблица из двух столбцов: 1 - строка, 2 – число. Требуется написать запрос, в результате
- •Написать запрос, выдающий отчёт о суммарных выплатах сотрудникам, непосредственно
- •Определить временной интервал между датами. Результат вывести в виде: ## лет ## мес ## дней, где # обозначает цифру.
- •Вывести фамилии всех сотрудников через запятую столько раз сколько символов в их фамилии
- •Для каждой таблицы схемы вывести:
- •Создать запрос для определения сумм зарплат сотрудников от сотрудников, не имеющих менеджеров, до сотрудников, не имеющих подчиненных.
- •Выборы президента сша
- •Плотный ранг
- •Для всех связей между таблицами схемы вывести:
- •Из заданных наборов символов исключить те наборы символов, которые отличаются только порядком. Например, заданы наборы:
- •В названии отдела вывести только второе слово, если название состоит из двух и более слов, иначе вывести первое слово.
- •Создать запрос для определения списка городов, в которых расположены департаменты, суммарная заработная плата в которых выше средней суммарной заработной платы в департаментах этого города.
- •Имеется таблица:
- •Определить сумму цифр в произвольной символьной строке.
- •Для каждой таблицы схемы вывести:
- •Для каждой таблицы схемы вывести:
- •Сформировать отчёт, содержащий номер отдела, название отдела, имена и фамилии сотрудников, а также их зарплату в виде:
- •Условия нет
- •Условия нет
- •Вывести фамилии сотрудников, получающих зарплату выше средней в отделе, в котором они работают.
- •Не помню задание, похоже на костяна, мишаню и лену
- •Для всех таблиц схемы вывести:
- •Задания нет
- •Сумма цифр в строке
- •Создать запрос для вывода фамилий, последних должностей и дат приема на работу сотрудников, информация о работе
- •"Определить ближайший к заданной дате год, когда 29 февраля придется на воскресенье. "
- •В таблицу записана информация об удачных и неудачных попытках подключения к базе данных.
Определить сколько лет, месяцев и дней осталось до президентских выборов в сша, которые проводятся по високосным годам в первый понедельник после первого вторника ноября.
define data='3-1-2009'
Select VotedDay as "VotedDay",
trunc(months_between(VotedDay,TO_DATE('&&data', 'DD MM YYYY'))/12) as "Year",
trunc(months_between(VotedDay,TO_DATE('&data', 'DD MM YYYY'))
- 12* trunc(months_between(VotedDay,TO_DATE('&data', 'DD MM YYYY'))/12))
as "Month",
VotedDay- add_months( TO_DATE('&data', 'DD MM YYYY'),
months_between(VotedDay,TO_DATE('&data', 'DD MM YYYY')))
as "Day"
from
(SELECT
CASE WHEN TO_NUMBER(TO_CHAR(LAST_DAY(ADD_MONTHS(TRUNC(TO_DATE('&data', 'DD MM YYYY'),'YEAR'),1)),'DD'))-29=0
THEN NEXT_DAY(NEXT_DAY(ADD_MONTHS(TRUNC(TO_DATE('&data', 'DD MM YYYY'),'YEAR'),10),2), 1)
WHEN TO_NUMBER(TO_CHAR(LAST_DAY(ADD_MONTHS(TRUNC(TO_DATE('&data', 'DD MM YYYY'),'YEAR'),13)),'DD'))-29=0
THEN NEXT_DAY(NEXT_DAY(ADD_MONTHS(TRUNC(TO_DATE('&data', 'DD MM YYYY'),'YEAR'),22),2), 1)
WHEN TO_NUMBER(TO_CHAR(LAST_DAY(ADD_MONTHS(TRUNC(TO_DATE('&data', 'DD MM YYYY'),'YEAR'),25)),'DD'))-29=0
THEN NEXT_DAY(NEXT_DAY(ADD_MONTHS(TRUNC(TO_DATE('&data', 'DD MM YYYY'),'YEAR'),34),2), 1)
Else
NEXT_DAY(NEXT_DAY(ADD_MONTHS(TRUNC(TO_DATE('&data', 'DD MM YYYY'),'YEAR'),46),2), 1)
end as VotedDay
FROM dual)
Дана таблица из двух столбцов: 1 - строка, 2 – число. Требуется написать запрос, в результате
которого каждая строка таблицы выдавалась бы столько раз, сколько определено для неё во втором столбце.
Решение
drop table dop2;
create table dop2 (colString varchar2(10), colNumber number(3));
insert into dop2 values('apple',4);
insert into dop2 values( 'melon',2);
insert into dop2 values('banana',1);
select * from dop2;
select colString
from
(select rownum numberRow from all_objects where rownum <= (select max(colNumber) from dop2)) OrderTable
join dop2
on colNumber >= OrderTable.numberRow
Для всех связей между таблицами схемы вывести: - Имя главной таблицы; - Имя подчиненной таблицы; - Имя первого столбца первичного ключа; - Имя второго столбца первичного ключа; - Общее число столбцов первичного ключа; - Имя первого столбца вторичного ключа; - Имя второго столбца вторичного ключа;
select tblForeignKey.table_Parent, tblForeignKey.table_Child,
tblPrimaryKey.colPrimaryKey1, tblPrimaryKey.colPrimaryKey2,tblPrimaryKey.colCount,
tblForeignKey.colForeignKey1,tblForeignKey.colForeignKey2
from
(SELECT uc.table_name,
max(CASE WHEN position = 1 THEN column_name END) colPrimaryKey1,
max(CASE WHEN position = 2 THEN column_name END) colPrimaryKey2, max(position) colCount
FROM user_constraints uc, user_cons_columns ucc
WHERE uc.constraint_name = ucc.constraint_name
AND uc.constraint_type = 'P'
GROUP BY uc.table_name) tblPrimaryKey
JOIN
(SELECT aa.table_name table_Parent, bb.table_name table_Child, aa.colForeignKey1, aa.colForeignKey2
FROM
(SELECT uc.table_name,
r_constraint_name,
max(CASE WHEN position = 1 THEN column_name END) colForeignKey1,
max(CASE WHEN position= 2 THEN column_name END) colForeignKey2
FROM user_constraints uc, user_cons_columns ucc
WHERE uc.constraint_name = ucc.constraint_name
AND uc.constraint_type='R'
GROUP BY uc.table_name, r_constraint_name) aa
JOIN
(SELECT table_name,
constraint_name
FROM user_constraints
WHERE constraint_type = 'P') bb
ON aa.r_constraint_name=bb.constraint_name
) tblForeignKey
on (tblPrimaryKey.table_name=tblForeignKey.table_Parent);