Есть таблица с уникальным полем «ID». Вывести первые 10 строк (по возрастанию ID). Не использовать запросы типа «SELECT TOP 10».
Читать оставшуюся часть этой записи »
Первые 10 строк
21 октября, 2018Печать чисел от 0 до 1000
19 октября, 2018Напишите, пожалуйста, функцию (метод), которая будет печатать числа от 0 до 1000, кратные трём и не кратные пяти, сумма цифр в которых меньше десяти.
Читать оставшуюся часть этой записи »
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.
Читать оставшуюся часть этой записи »
Использование pipelined функции
29 сентября, 2018Имеется таблица dept со следующей структурой:
Name Type Nullable Default Comments ------ ------------ -------- ------- -------- DEPTNO NUMBER DNAME VARCHAR2(14) Y LOC VARCHAR2(13) Y
Необходимо реализовать функцию PL/SQL которая будет возвращать выборку из таблицы dept заданную минимальным и максимальным значением поля DEPTNO. Реализуемая функция должна использовать метод pipelined.
Читать оставшуюся часть этой записи »
Регулярные выражения
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);
Случайные числа
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 декабря, 2017CREATE 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'); /