Archive for the ‘SQL’ Category

SQL

Воскресенье, 28 июня, 2020

Есть две таблицы A и B, в таблице A 3 записи, в B — 4

В каждой таблице есть не уникальное, числовое, всегда заполненное поле driver_id

Необходимо заполнить таблицу, в которой будут минимальные и максимальные количества строк после выполнения запросов по шаблону:

select     count(*)

from       A

Тип джойна B

on         A.driver_id = B.driver_id

(далее…)

Задолженность по кредиту

Суббота, 15 февраля, 2020

Написать скрипты на любом известном языке SQL, чтобы получить список кредитов, которые на момент расчета имеют непогашенную задолженность, и рассчитать для каждого такого кредита:

  1. Общую (накопленную) сумму просроченного долга непогашенную (не выплаченную) к моменту расчета.
  2. Дату начала текущей (последней) просрочки. Под датой начала просрочки, в данной задаче понимается первая дата непрерывного периода, в котором общая сумма просроченного непогашенного долга > 0.Учесть, что периодов просрочек может быть несколько.
  3. Кол-во дней текущей просрочки.

(далее…)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(далее…)

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

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

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

XML

Суббота, 6 октября, 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.
(далее…)

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

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

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

Коллекции

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

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

CREATE OR REPLACE TYPE TNUM as table of number;

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

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

Суббота, 29 сентября, 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);