Archive for the ‘Oracle’ Category

Проектирование структуры БД в формате XML

Понедельник, Ноябрь 5th, 2018

Структура базы данных (SQL):

employee — сотрудник
— id
— headId — его непосредственный руководитель
— firstName — имя
— lastName — фамилия
— salary — размер зарплаты
— departmentId — отдел

department — отдел
— id
— name — название отдела

project — проект
— id
— name — название проекта

role — роль сотрудника в проекте
— id
— projectId
— employeeId
— name — название роли

Пожалуйста, спроектируйте оптимальную структуру в формате XML,
в которой можно представить данные из вышеописанной базы.
(далее…)

Хранение дерева папок

Понедельник, Ноябрь 5th, 2018

Спроектируйте структуру SQL-таблицы для хранения дерева папок.
(далее…)

Департамент и сотрудник

Воскресенье, Октябрь 21st, 2018

Даны две SQL-таблицы:

EMPLOYEE — сотрудник
— EMPLOYEE_ID
— EMPLOYEE_NAME — имя
— lEMPLOYEE_SURNAME — фамилия
— EMPLOYEE_SALARY — размер зарплаты
— DEPARTMENT_ID — отдел

DEPARTMENT — отдел
— DEPARTMENT_ID
— DEPARTMENT_NAME — название отдела

Напишите запросы к ним, которые будут выводить:

  1. Список имён и фамилий всех сотрудников с названиями отделов, к которым каждый из них привязан
  2. Список отделов, к которым привязано более двух сотрудников

(далее…)

Первые 10 строк

Воскресенье, Октябрь 21st, 2018

Есть таблица с уникальным полем «ID». Вывести первые 10 строк (по возрастанию ID). Не использовать запросы типа «SELECT TOP 10».
(далее…)

XML

Суббота, Октябрь 6th, 2018

Имеется

xmltype('
<root>
  <row>
    <col>v11</col>
    <col>v12</col>
    <col>v13</col>
    <col>v14</col>
  </row>
  <row>
    <col>v21</col>
    <col>v22</col>
    <col>v23</col>
    <col>v24</col>
  </row>
</root>')

Необходимо:
а) Получить выборку

C1   C2   C3   C4

—- —- —- —-

v11  v12  v13  v14

v21  v22  v23  v24

Условия: количество узлов row может варьироваться, col всегда статично = 4 шт в пределах row.
(далее…)

Использование pipelined функции

Суббота, Сентябрь 29th, 2018

Имеется таблица dept со следующей структурой:

Name   Type         Nullable Default Comments 
------ ------------ -------- ------- -------- 
DEPTNO NUMBER                                 
DNAME  VARCHAR2(14) Y                         
LOC    VARCHAR2(13) Y

Необходимо реализовать функцию PL/SQL которая будет возвращать выборку из таблицы dept заданную минимальным и максимальным значением поля DEPTNO. Реализуемая функция должна использовать метод pipelined.
(далее…)

Регулярные выражения

Суббота, Сентябрь 29th, 2018

Задана строка ‘1,2,3,4’, необходимо, используя регулярные выражения в запросе получить результат:
C1 C2 C3 C4
— — — —
1 2 3 4
(далее…)

Коллекции

Суббота, Сентябрь 29th, 2018

Имеется декларация типа:

CREATE OR REPLACE TYPE TNUM as table of number;

Необходимо написать реализацию функции, возвращающая в качестве результата заполненный массив, имеющий тип TNUM с значениями от 1…1000
(далее…)

Задвоение данных

Суббота, Сентябрь 29th, 2018

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

create table t (a number, b number);

Пример данных:
a b
1 1
2 2
2 2
3 3
3 3
3 3
Требуемый результат:
a b
1 1
2 2
3 3
Вариант решения:

delete from t
 where rowid not in (select max(rowid) from t group by t.a, t.b);

Случайные числа

Суббота, Сентябрь 29th, 2018

Вывести 1000 случайных чисел от 1 до 1000, таких что не повторяются в этой последовательности, больше чем 3 раза.

select r.*
  from (select round(dbms_random.value(1, 1000)) as v
          from dual
        connect by level <= 1000) r
 group by r.v
having count(*) < 4;