Posts Tagged ‘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.
(далее…)

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

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

Процент годовых

Воскресенье, Февраль 12th, 2017

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

Интервалы дат

Воскресенье, Январь 8th, 2017

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

Дни рождения клиентов

Воскресенье, Январь 8th, 2017

Имеется таблица с днями рождения клиентов. Необходимо написать запрос, который позволит получить список клиентов, у которых в ближайшие N дней от заданной даты будет день рождения.
(далее…)