- •Дана символьная строка, в которой отдельные слова разделены любым количеством пробелов.
- •//Условие задачи:
- •Определить список последовательностей подчиненности от преподавателей, не имеющих начальника, до преподавателей, не имеющих подчиненных. Результат представить в виде:
- •Посчитать кол-во 29.02 между двумя заданными датами
- •Показать накопленную сумму сотрудников по их отделам.
- •Вывести все даты за 2011 год и соответствующие дни недели без использования иерархических запросов и Model.
- •В произвольной строке, состоящей из символьных элементов, разделенных запятыми, отсортировать элементы по алфавиту. Например, символьную строку
- •Определить временной интервал между заданной и текущей датами. Результат вывести в виде: ## лет ## мес ## дней, где # обозначает цифру.
- •Для таблиц схемы, имеющих индексы вывести:
- •Вывести фамилии сотрудников, начальники которых работают в другой стране.В результат вывести:
- •Определить дату начала ближайшего к заданной дате Уимблдонского турнира, который начинается за шесть недель до первого понедельника августа
- •Для каждой таблицы схемы вывести:
- •Определить сколько лет, месяцев и дней осталось до президентских выборов в сша, которые проводятся по високосным годам в первый понедельник после первого вторника ноября.
- •Дана таблица из двух столбцов: 1 - строка, 2 – число. Требуется написать запрос, в результате
- •Написать запрос, выдающий отчёт о суммарных выплатах сотрудникам, непосредственно
- •Определить временной интервал между датами. Результат вывести в виде: ## лет ## мес ## дней, где # обозначает цифру.
- •Вывести фамилии всех сотрудников через запятую столько раз сколько символов в их фамилии
- •Для каждой таблицы схемы вывести:
- •Создать запрос для определения сумм зарплат сотрудников от сотрудников, не имеющих менеджеров, до сотрудников, не имеющих подчиненных.
- •Выборы президента сша
- •Плотный ранг
- •Для всех связей между таблицами схемы вывести:
- •Из заданных наборов символов исключить те наборы символов, которые отличаются только порядком. Например, заданы наборы:
- •В названии отдела вывести только второе слово, если название состоит из двух и более слов, иначе вывести первое слово.
- •Создать запрос для определения списка городов, в которых расположены департаменты, суммарная заработная плата в которых выше средней суммарной заработной платы в департаментах этого города.
- •Имеется таблица:
- •Определить сумму цифр в произвольной символьной строке.
- •Для каждой таблицы схемы вывести:
- •Для каждой таблицы схемы вывести:
- •Сформировать отчёт, содержащий номер отдела, название отдела, имена и фамилии сотрудников, а также их зарплату в виде:
- •Условия нет
- •Условия нет
- •Вывести фамилии сотрудников, получающих зарплату выше средней в отделе, в котором они работают.
- •Не помню задание, похоже на костяна, мишаню и лену
- •Для всех таблиц схемы вывести:
- •Задания нет
- •Сумма цифр в строке
- •Создать запрос для вывода фамилий, последних должностей и дат приема на работу сотрудников, информация о работе
- •"Определить ближайший к заданной дате год, когда 29 февраля придется на воскресенье. "
- •В таблицу записана информация об удачных и неудачных попытках подключения к базе данных.
Задания нет
with tEmp as
(SELECT ddept_id ddept_idEmp, d.department_name dept_nameEmp, COUNT(*) countEmp , e.last_name || ' ' || e.first_name last_NameEmp,
d.department_id dep_id, grouping(ddept_id) dept_grEmp, grouping(e.last_name || ' ' || e.first_name) name_grEmp
FROM(SELECT department_id ddept_id
FROM employees
GROUP BY department_id) JOIN departments d ON ddept_id = d.department_id
JOIN employees e ON e.department_id = d.department_id JOIN jobs USING (job_id)
GROUP BY rollup((ddept_id, d.department_name),(e.last_name || ' ' || e.first_name, d.department_id))
ORDER BY dept_nameEmp, last_NameEmp)
select rn as "Номер", DECODE(dept_grEmp, 1,'Общее кол-во сотрудников',decode(last_N, NULL, 'Кол-во сотрудников в отделе', ddept_idEmp)) as "Номер отдела",
dept_nameEmp as "Название", DECODE(last_N, NULL, to_char(countEmp) , last_N) as "Сотрудник"
from tEmp left join
(select rownum rn, ddept_idEmp ddept_id, dept_nameEmp dept_name,countEmp col,last_NameEmp last_N,dept_grEmp dept_gr,name_grEmp name_gr
from tEmp
where dep_id is not null) tbl on tEmp.last_NameEmp = tbl.last_N
order by dept_nameEmp,last_N
Сумма цифр в строке
SELECT street_address "String", 9* (LENGTH(street_address) - nvl(LENGTH(REPLACE(street_address, '9', '')), 0)) + 8* (LENGTH(street_address) - nvl(LENGTH(REPLACE(street_address, '8', '')), 0)) + 7* (LENGTH(street_address) - nvl(LENGTH(REPLACE(street_address, '7', '')), 0)) + 6* (LENGTH(street_address) - nvl(LENGTH(REPLACE(street_address, '6', '')), 0)) + 5* (LENGTH(street_address) - nvl(LENGTH(REPLACE(street_address, '5', '')), 0)) + 4* (LENGTH(street_address) - nvl(LENGTH(REPLACE(street_address, '4', '')), 0)) + 3* (LENGTH(street_address) - nvl(LENGTH(REPLACE(street_address, '3', '')), 0)) + 2* (LENGTH(street_address) - nvl(LENGTH(REPLACE(street_address, '2', '')), 0)) + 1* (LENGTH(street_address) - nvl(LENGTH(REPLACE(street_address, '1', '')), 0)) "Sum of digit" FROM locations
Создать запрос для вывода фамилий, последних должностей и дат приема на работу сотрудников, информация о работе
которых в некоторые временные интервалы отсутствует
SELECT employees.last_name, job_history.job_id, employees.hire_date
FROM job_history
JOIN employees ON job_history.employee_id = employees.employee_id
WHERE job_history.employee_id IN (
-------
SELECT employees.employee_id
FROM job_history t1
JOIN employees ON employees.employee_id = t1.employee_id
CROSS JOIN job_history t2
WHERE t1.employee_id = t2.employee_id
AND t1.end_date < t2.start_date - 1
------
UNION --second
(
SELECT DISTINCT job_history.employee_id
FROM job_history
MINUS --first
SELECT employees.employee_id
FROM job_history
JOIN employees ON job_history.employee_id = employees.employee_id
WHERE job_history.start_date = employees.hire_date
OR job_history.start_date + 1 = employees.hire_date
)
)
AND job_history.end_date IN
(
SELECT MAX(t1.end_date)
FROM job_history t1
GROUP BY t1.employee_id
)
"Одной командой SELECT вывести сведения обо всех столбцах таблиц текущей схемы,
которые используются во внешних ключах. В результат вывести пять столбцов:
1. Имя ссылочного ограничения целостности (внешнего ключа)
2. Имя таблицы, которой принадлежит данное ссылочное ограничение целостности (внешний ключ)
3. Имя столбца таблицы, который входит во внешний ключ (foreign key)
4. Имя таблицы, на которую ссылается данный внешний ключ
5. Имя столбца таблицы, на которую ссылается данный внешний ключ,
которому соответствует столбец, указанный в п.3
Результат отсортировать по возрастанию по столбцам 1, 2 и 3, перечисленным выше. "
SELECT uc.constraint_name, ucc1.table_name, ucc1.column_name, ucc2.table_name, ucc2.column_name
FROM user_constraints uc, user_cons_columns ucc1, user_cons_columns ucc2
WHERE uc.constraint_name = ucc1.constraint_name
AND uc.r_constraint_name = ucc2.constraint_name
AND ucc1.position = ucc2.position
AND uc.constraint_type = 'R'
order by 1, 2, 3;
Сформировать отчёт, содержащий номер отдела, название отдела, имена и фамилии сотрудников и общее кол-во сотрудников в каждом отделе. Сортировка – по названию отдела и имени и фамилии сотрудника. Также в отчёте должен присутствовать столбец со сквозной нумерацией сотрудников, при этом строки, содержащие общее кол-во сотрудников (в т.ч. по отделам) нумероваться не должны.
Результат:
…
SELECT r num, DECODE(gr, 1, 'Общее кол-во сотрудников в отделах', DECODE(TRIM(TRANSLATE(nv, '0123456789',' ')), null, 'Кол-во сотрудников в отделе', department_id)) department_id, department_name, nv employee FROM ( SELECT GROUPING(department_name) gr, department_id, department_name, NVL(nam, COUNT(*)) nv, r -- там, где имени нет - сумма FROM ( SELECT department_id, department_name, rownum r, nam FROM ( SELECT departments.department_id, department_name, employees.first_name || ' ' || employees.last_name nam FROM employees INNER JOIN departments ON employees.department_id = departments.department_id ORDER BY department_name ) ) GROUP BY ROLLUP (department_id, department_name, nam, r) HAVING department_name IS NOT NULL OR department_id IS NULL --убрать лишние значения в выводе ORDER BY department_name, r ) WHERE r is NOT null OR ( r IS null AND TRIM(TRANSLATE(nv, '0123456789',' ')) IS null ) -- decode используется для удаления лишних записей в итоговой таблице. Работает он так: Если в строке есть номер сотрудника или номера нет, но есть число в колонке nv, отвечающее за количество сотрудников, то строку оставляем. Проверка на наличие числа осуществляется функцией translate (если в ячейке число - она станет равна null)
