
- •Дана символьная строка, в которой отдельные слова разделены любым количеством пробелов.
- •//Условие задачи:
- •Определить список последовательностей подчиненности от преподавателей, не имеющих начальника, до преподавателей, не имеющих подчиненных. Результат представить в виде:
- •Посчитать кол-во 29.02 между двумя заданными датами
- •Показать накопленную сумму сотрудников по их отделам.
- •Вывести все даты за 2011 год и соответствующие дни недели без использования иерархических запросов и Model.
- •В произвольной строке, состоящей из символьных элементов, разделенных запятыми, отсортировать элементы по алфавиту. Например, символьную строку
- •Определить временной интервал между заданной и текущей датами. Результат вывести в виде: ## лет ## мес ## дней, где # обозначает цифру.
- •Вывести фамилии сотрудников, начальники которых работают в другой стране.В результат вывести:
- •Для таблиц схемы, имеющих индексы вывести:
- •Определить дату начала ближайшего к заданной дате Уимблдонского турнира, который начинается за шесть недель до первого понедельника августа
- •Для каждой таблицы схемы вывести:
- •Определить сколько лет, месяцев и дней осталось до президентских выборов в сша, которые проводятся по високосным годам в первый понедельник после первого вторника ноября.
- •Дана таблица из двух столбцов: 1 - строка, 2 – число. Требуется написать запрос, в результате
- •Написать запрос, выдающий отчёт о суммарных выплатах сотрудникам, непосредственно
- •Определить временной интервал между датами. Результат вывести в виде: ## лет ## мес ## дней, где # обозначает цифру.
- •Вывести фамилии всех сотрудников через запятую столько раз сколько символов в их фамилии
- •Для каждой таблицы схемы вывести:
- •Создать запрос для определения сумм зарплат сотрудников от сотрудников, не имеющих менеджеров, до сотрудников, не имеющих подчиненных.
- •Выборы президента сша
- •Плотный ранг
- •Для всех связей между таблицами схемы вывести:
- •Из заданных наборов символов исключить те наборы символов, которые отличаются только порядком. Например, заданы наборы:
- •В названии отдела вывести только второе слово, если название состоит из двух и более слов, иначе вывести первое слово.
- •Создать запрос для определения списка городов, в которых расположены департаменты, суммарная заработная плата в которых выше средней суммарной заработной платы в департаментах этого города.
- •Имеется таблица:
- •Определить сумму цифр в произвольной символьной строке.
- •Для каждой таблицы схемы вывести:
- •Для каждой таблицы схемы вывести:
- •Сформировать отчёт, содержащий номер отдела, название отдела, имена и фамилии сотрудников, а также их зарплату в виде:
- •Условия нет
- •Условия нет
- •Вывести фамилии сотрудников, получающих зарплату выше средней в отделе, в котором они работают.
- •Не помню задание, похоже на костяна, мишаню и лену
- •Для всех таблиц схемы вывести:
- •Задания нет
- •Сумма цифр в строке
- •Создать запрос для вывода фамилий, последних должностей и дат приема на работу сотрудников, информация о работе
- •"Определить ближайший к заданной дате год, когда 29 февраля придется на воскресенье. "
- •В таблицу записана информация об удачных и неудачных попытках подключения к базе данных.
Вывести фамилии сотрудников, начальники которых работают в другой стране.В результат вывести:
1. Идентификатор сотрудника,
2. Фамилию сотрудника,
3. Название страны, где расположен офис сотрудника,
4. Идентификатор непосредственного руководителя сотрудника,
5. Фамилию непосредственного руководителя сотрудника,
6. Название страны, где расположен офис непосредственного руководителя сотрудника.
SELECT tab.employee_id,tab.last_name,tab.country_name,em AS "Manager_id",ln AS "Last_name mngr",countries.country_name as "Mngr counrty_name"
FROM
(SELECT t.employee_id,t.last_name,t.department_id,country_name,em,ln,di
FROM
(SELECT e1.employee_id,e1.last_name,e1.department_id,e2.employee_id em,e2.last_name ln,e2.department_id di
FROM employees e1 INNER JOIN employees e2
ON e1.manager_id = e2.employee_id) t
JOIN departments ON t.department_id = departments.department_id
JOIN locations ON departments.location_id = locations.location_id
JOIN countries ON locations.country_id = countries.country_id) tab
JOIN departments ON tab.di = departments.department_id
JOIN locations ON departments.location_id = locations.location_id
JOIN countries ON locations.country_id = countries.country_id
WHERE tab.country_name != countries.country_name;
Для таблиц схемы, имеющих индексы вывести:
? Имя таблицы;
? Имя первого (по алфавиту) неуникального индекса;
? Количество столбцов первого неуникального индекса;
? Имя первого (по алфавиту) уникального индекса;
? Количество столбцов первого уникального индекса;
? Общее число неуникальных индексов;
? Общее число уникальных индексов.
WITH
tab1 AS (Select tn, ui, ui1, num, num1, con, con1
from
(
SELECT DISTINCT tab12.table_name tn, ui, ui1, num, num1, con, con1
FROM
((SELECT table_name
from user_indexes) tab12
RIGHT JOIN
((SELECT tn, ui, num, max_r-min_r+1 as con
FROM
((select user_indexes.table_name tn, user_indexes.index_name ui, max(column_position) num
from user_indexes join user_ind_columns on user_indexes.index_name =
user_ind_columns.index_name
where user_indexes.uniqueness = 'NONUNIQUE'
group by user_indexes.table_name, user_indexes.index_name
order by user_indexes.table_name, user_indexes.index_name)
LEFT JOIN
(SELECT tab_n, min(r) as min_r, max(r) as max_r
FROM
(SELECT tab_n, rownum r
FROM
(
select table_name tab_n
from user_indexes
where user_indexes.uniqueness = 'NONUNIQUE'))
group by tab_n)
ON tn = tab_n))
FULL OUTER JOIN
(
SELECT tn1, ui1, num1, max_r1-min_r1+1 as con1
FROM
((select user_indexes.table_name tn1, user_indexes.index_name ui1, max(column_position) num1
from user_indexes join user_ind_columns on user_indexes.index_name =
user_ind_columns.index_name
where user_indexes.uniqueness = 'UNIQUE'
group by user_indexes.table_name, user_indexes.index_name
order by user_indexes.table_name, user_indexes.index_name)
LEFT JOIN
(SELECT tab_n1, min(r1) as min_r1, max(r1) as max_r1
FROM
(SELECT tab_n1, rownum r1
FROM
(
select table_name tab_n1
from user_indexes
where user_indexes.uniqueness = 'UNIQUE'))
group by tab_n1)
ON tn1 = tab_n1))
ON tn = tn1)
ON tab12.table_name = tn OR tab12.table_name = tn1))),
t_n AS (Select tn, ui, ui11, num, num1, con, con1, r3
from
(
(Select tn, tn1, ui, ui11, num, num1, con, con1, r3
from
(
(SELECT tn, ui, ui1, num, con, rownum as r3
FROM (SELECT *
FROM tab1
ORDER BY tn, ui)
)
LEFT JOIN
(SELECT tn tn1, ui1 ui11, ui ui_1, num1, con1, rownum as r4
FROM (SELECT *
FROM tab1
ORDER BY tn, ui1))
ON r3 = r4
)))),
counts AS (select tn, MIN(r3) AS "MIN_R_NUM3"
FROM t_n
GROUP BY tn),
res_table AS (SELECT t_n.tn table_name, t_n.ui nonu_index_name, t_n.num count_nonu,
t_n.ui11 u_index_name, t_n.num1 coun_uniq, r3 - MIN_R_NUM3 +1 c_pos1, con, con1
FROM t_n INNER JOIN counts ON t_n.tn = counts.tn)
SELECT table_name as "Table Name", nonu_index_name AS "Name of First Nonuniq Index",
count_nonu AS "Count of first nonuniq", u_index_name AS "Name of First Uniq Index",
coun_uniq as "Count of first Uniq", con AS "Count of Nonuniq", con1 AS "Count of Uniq"
FROM res_table
WHERE c_pos1 = '1';
Создать внешнюю таблицу для чтения данных из текстового файла, содержащего информацию в виде:
Номер ФИО Дата Оценка Дисциплина
1 Петров С.С. 12-05-2008 4 Математика
2 Сомов Л.Л. 4-05-2008 5 Физика
3 Амосов Д.Г. 3-05-2008 4 Физика
DROP TABLE stud_data;
CREATE TABLE stud_data
(Номер NUMBER(1),
ФИО VARCHAR2(25),
Дата DATE,
Оценка NUMBER(1),
Дисциплина VARCHAR2(25))
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER
DEFAULT DIRECTORY stud
ACCESS PARAMETERS
(records delimited by newline
logfile stud:'log111'
badfile stud:'bad111'
fields terminated by WHITESPACE LRTRIM
(Номер POSITION(1:8) char,
ФИО POSITION(10:26) char,
Дата POSITION(28:40) CHAR(13) date_format DATE mask "dd-mm-yyyy",
Оценка POSITION(42:52) char,
Дисциплина POSITION(54:74) char))
LOCATION ('Marks.txt'))
REJECT LIMIT unlimited;
SELECT *
FROM stud_data;