Posts Tagged ‘Oracle’

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

Суббота, 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;

Сколько строк будет добавлено в таблицу

Воскресенье, 24 декабря, 2017
CREATE TABLE T (A NUMBER, B NUMBER);

ALTER TABLE T ADD CONSTRAINT UK UNIQUE (A, B);

INSERT INTO t (a, b) VALUES (NULL, NULL);
INSERT INTO t (a, b) VALUES (NULL, NULL);

INSERT INTO t (a, b) VALUES (NULL, 1);
INSERT INTO t (a, b) VALUES (NULL, 1);

INSERT INTO t (a, b) VALUES (1, NULL);
INSERT INTO t (a, b) VALUES (1, NULL);

INSERT INTO t (a, b) VALUES (1, 1);
INSERT INTO t (a, b) VALUES (1, 1);

SELECT * FROM t;
/

Электронная почта и доменная зона

Воскресенье, 24 декабря, 2017

Написать запрос, который выведет список электронных адресов, у которых правильная доменная зона.

Тестовые данные:

CREATE TABLE "EMAIL"("EMAIL_NAME" VARCHAR2(4000 CHAR));

COMMENT ON TABLE "EMAIL" IS 'Адрес электронной почты';
COMMENT ON COLUMN "EMAIL"."EMAIL_NAME" IS 'Наименование';

CREATE TABLE "DOMAIN"("DOMAIN_NAME" VARCHAR2(4000 CHAR));

COMMENT ON TABLE "DOMAIN" IS 'Домен';
COMMENT ON COLUMN "DOMAIN"."DOMAIN_NAME" IS 'Наименование';

INSERT INTO domain (domain_name) VALUES ('ru');
INSERT INTO domain (domain_name) VALUES ('com');
INSERT INTO domain (domain_name) VALUES ('рф');

INSERT INTO email (email_name) VALUES ('user1@gmail.ru');
INSERT INTO email (email_name) VALUES ('user2@mail.rud778dfuds');
INSERT INTO email (email_name) VALUES ('user3@mail.com7');
INSERT INTO email (email_name) VALUES ('user4@mai4com7');
INSERT INTO email (email_name) VALUES ('user5@yandex.рф');
INSERT INTO email (email_name) VALUES ('user6@gmail.com');
/

(далее…)

Високосный год

Воскресенье, 24 декабря, 2017

Напишите функцию, которая по дате определяет високосный год или нет
(далее…)

Вопросы на PL/SQL

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

Дан код:

CREATE OR REPLACE FUNCTION gеn_еmаil_name(р_fіrst_nаme IN VARCHAR2,
                                          p_last_nаme    IN VARCHAR2)
  RETURN VARCHAR2 IS
  v_emaіl_namе VARCHAR2(19);
BEGIN
  v_emaіl_namе := substr(р_fіrst_nаme, 1, 1) || substr(p_last_nаme, 1, 7) ||
                  '@Oraclе.com';
  RETURN v_emaіl_namе;
END gеn_еmаil_name;
/

(далее…)

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

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

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

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

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

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

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

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

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

Дерево

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

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

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

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

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