
- •Дана символьная строка, в которой отдельные слова разделены любым количеством пробелов.
- •//Условие задачи:
- •Определить список последовательностей подчиненности от преподавателей, не имеющих начальника, до преподавателей, не имеющих подчиненных. Результат представить в виде:
- •Посчитать кол-во 29.02 между двумя заданными датами
- •Показать накопленную сумму сотрудников по их отделам.
- •Вывести все даты за 2011 год и соответствующие дни недели без использования иерархических запросов и Model.
- •В произвольной строке, состоящей из символьных элементов, разделенных запятыми, отсортировать элементы по алфавиту. Например, символьную строку
- •Определить временной интервал между заданной и текущей датами. Результат вывести в виде: ## лет ## мес ## дней, где # обозначает цифру.
- •Вывести фамилии сотрудников, начальники которых работают в другой стране.В результат вывести:
- •Для таблиц схемы, имеющих индексы вывести:
- •Определить дату начала ближайшего к заданной дате Уимблдонского турнира, который начинается за шесть недель до первого понедельника августа
- •Для каждой таблицы схемы вывести:
- •Определить сколько лет, месяцев и дней осталось до президентских выборов в сша, которые проводятся по високосным годам в первый понедельник после первого вторника ноября.
- •Дана таблица из двух столбцов: 1 - строка, 2 – число. Требуется написать запрос, в результате
- •Написать запрос, выдающий отчёт о суммарных выплатах сотрудникам, непосредственно
- •Определить временной интервал между датами. Результат вывести в виде: ## лет ## мес ## дней, где # обозначает цифру.
- •Вывести фамилии всех сотрудников через запятую столько раз сколько символов в их фамилии
- •Для каждой таблицы схемы вывести:
- •Создать запрос для определения сумм зарплат сотрудников от сотрудников, не имеющих менеджеров, до сотрудников, не имеющих подчиненных.
- •Выборы президента сша
- •Плотныйранг
- •Для всех связей между таблицами схемы вывести:
- •Из заданных наборов символов исключить те наборы символов, которые отличаются только порядком. Например, заданынаборы:
- •В названии отдела вывести только второе слово, если название состоит из двух и более слов, иначе вывести первое слово.
- •Создать запрос для определения списка городов, в которых расположены департаменты, суммарная заработная плата в которых выше средней суммарной заработной платы в департаментах этого города.
- •Имеется таблица:
- •Определить сумму цифр в произвольной символьной строке.
- •Для каждой таблицы схемы вывести:
- •Для каждой таблицы схемы вывести:
- •Сформировать отчёт, содержащий номер отдела, название отдела, имена и фамилии сотрудников, а также их зарплату в виде:
- •Условия нет
- •Условия нет
- •Вывести фамилии сотрудников, получающих зарплату выше средней в отделе, в котором они работают.
- •Не помню задание, похоже на костяна, мишаню и лену
- •Для всех таблиц схемы вывести:
- •Задания нет
- •Сумма цифр в строке
- •Создать запрос для вывода фамилий, последних должностей и дат приема на работу сотрудников, информация о работе
- •"Определить ближайший к заданной дате год, когда 29 февраля придется на воскресенье. "
- •В таблицу записана информация об удачных и неудачных попытках подключения к базе данных.
Написать запрос, выдающий отчёт о суммарных выплатах сотрудникам, непосредственно
подчиняющихся заданному руководителю по идентификаторам должностей (поле Job_id).
Непосредственное подчинение предполагает подчинение на первом уровне. Номер
руководителя может встречаться в отчете лишь дважды.
with tbl_1 as
(select manager_id, job_id, count(*) cnt_1 ,sum(salary) sm
from employees
where manager_id is not null
group by rollup(manager_id, job_id)),
tbl_2 as
(select manager_id, count(*) cnt_2 from tbl_1 group by manager_id),
tbl_3 as
( select manager_id, job_id, cnt_1, sm,cnt_2,
rank() over (partition by manager_id order by job_id ) rnk
from tbl_1 join tbl_2 using(manager_id)
)
select case when rnk in (1, cnt_2) then manager_id end "Номерруководителя"
,job_id "Должность"
, cnt_1 "Кол-во сотрудников"
, sm "Выплаты"
, case when rnk = cnt_2 then 'Суммарная зарплата у руководителя ' || manager_id
else 'Зарплата сотрудников в должности ' || job_id
end "Видвыплаты"
from tbl_3
union all
select to_number(null), '', count(*), sum(salary), 'Общийитог' from employees
Определить временной интервал между датами. Результат вывести в виде: ## лет ## мес ## дней, где # обозначает цифру.
SELECT
CASE
WHEN to_date('&&y','dd.mm.yy')>to_date('&&x', 'dd.mm.yy') THEN (
TRUNC(MONTHs_BETWEEN('&&y', to_date('&&x', 'dd.mm.yy'))/12)|| ' years '||
TRUNC(MOD(MONTHS_BETWEEN('&&y', to_date('&&x', 'dd.mm.yy')),12))|| ' months '||
CASE
WHEN substr(to_date('&&y','dd.mm.yy'),0,2)<substr(to_date('&&x', 'dd.mm.yy'),0,2)
THEN Substr(LAST_DAY('&&x'),0,2)-substr(to_date('&&x', 'dd.mm.yy'),0,2) + substr(to_date('&&y','dd.mm.yy'),0,2)
WHEN substr(to_date('&&y','dd.mm.yy'),0,2)>substr(to_date('&&x', 'dd.mm.yy'),0,2)
THEN substr(to_date('&&y','dd.mm.yy'),0,2)-substr(to_date('&&x', 'dd.mm.yy'),0,2)
ELSE 0
END || ' days' )
WHEN to_date('&&y','dd.mm.yy')<to_date('&&x', 'dd.mm.yy') THEN (
TRUNC(MONTHs_BETWEEN(to_date('&&x', 'dd.mm.yy'),'&&y')/12)|| ' years '||
TRUNC(MOD(MONTHS_BETWEEN(to_date('&&x', 'dd.mm.yy'),'&&y' ),12))|| ' months '||
CASE
WHEN substr(to_date('&&y','dd.mm.yy'),0,2)<substr(to_date('&&x', 'dd.mm.yy'),0,2)
THEN substr(to_date('&&x', 'dd.mm.yy'),0,2)-substr(to_date('&&y','dd.mm.yy'),0,2)
WHEN substr(to_date('&&y','dd.mm.yy'),0,2)>substr(to_date('&&x', 'dd.mm.yy'),0,2)
THEN substr(LAST_DAY('&&y'),0,2)-substr(to_date('&&y','dd.mm.yy'),0,2)+ substr(to_date('&&x', 'dd.mm.yy'),0,2)
ELSE 0
END || ' days' )
ELSE '0'
END "RESULT"
FROM dual;
Вывести фамилии всех сотрудников через запятую столько раз сколько символов в их фамилии
SELECT last_name, LPAD(last_name ,length(last_name)*length(last_name)+length(last_name)-1,last_name || ',')
FROMEMPLOYEES