Posts Tagged ‘SQL’

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

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

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

Воскресенье, 12 февраля, 2017

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

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

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

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

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

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

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

Дерево

Пятница, 6 января, 2017

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

Генератор непрерывного интервала дат

Воскресенье, 25 декабря, 2016

Напишите генератор непрерывного интервала дат с 10.01.2013 по 10.02.2013 в виде запроса.
(далее…)

Платёжный документ. Подитоги

Воскресенье, 25 декабря, 2016

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

Платёжный документ

Суббота, 24 декабря, 2016

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

Курсы валют

Суббота, 24 декабря, 2016

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

CREATE TABLE "CURRENCY_RATE" 
("CURR_ID" INTEGER,
 "DATE_RATE" DATE,
 "RATE" NUMBER
) TABLESPACE MIRAVILD_DATA;
 
COMMENT ON TABLE "CURRENCY_RATE" IS 'Курс валюты';
COMMENT ON COLUMN "CURRENCY_RATE"."CURR_ID" IS 'Идентификатор валюты';
COMMENT ON COLUMN "CURRENCY_RATE"."DATE_RATE" IS 'Дата курса';
COMMENT ON COLUMN "CURRENCY_RATE"."RATE" IS 'Значение курса';

CREATE UNIQUE INDEX "U_IDX_CURRENCY_RATE" ON "CURRENCY_RATE" ("CURR_ID", "DATE_RATE") TABLESPACE MIRAVILD_INDEX;

ALTER TABLE "CURRENCY_RATE" ADD CONSTRAINT "PK_CURRENCY_RATE" PRIMARY KEY ("CURR_ID", "DATE_RATE") 
USING INDEX "U_IDX_CURRENCY_RATE" ENABLE VALIDATE;
/

Курс валюты устанавливается не на каждую календарную дату.
Уникальный ключ: curr_id + date_rate.
Напишите запрос, который покажет действующее значение курса заданной валюты на любую заданную календарную дату.
(далее…)

Количество долгов в каждом месяце

Воскресенье, 6 ноября, 2016

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