Skip to content

Instantly share code, notes, and snippets.

View aykononov's full-sized avatar

Aleksandr Kononov aykononov

  • Russia, Saint Petersburg
  • 19:22 (UTC +03:00)
View GitHub Profile
@aykononov
aykononov / markdown-details-collapsible.md
Created May 5, 2022 19:37 — forked from pierrejoubert73/markdown-details-collapsible.md
How to add a collapsible section in markdown.

A collapsible section containing markdown

Click to expand!

Heading

  1. A numbered
  2. list
    • With some
    • Sub bullets
@aykononov
aykononov / analytical_9.sql
Last active April 13, 2020 22:31
Аналитические функции (9)
/* Аналитические функции (9)
Создать таблицу из произвольного количества >1000 строк с двумя псевдослучайными моментами времени из одних суток:
начало телефонного разговора, конец телефонного разговора. Длительность разговора не должна превышать 200 секунд.
Момент начала и конца разговора включаются в разговор.
Написать функцию, которая для произвольного момента времени определяет число разговоров в данный момент времени.
Написать запрос, который определит максимальное число одновременных разговоров в течение суток.
*/
--Подготавливаем тестовые данные.
CREATE TABLE Random_Dates_TAB (ID NUMBER GENERATED ALWAYS AS IDENTITY,start_date DATE, end_date DATE);
@aykononov
aykononov / analytical_8.sql
Last active April 7, 2020 13:16
Аналитические функции (8)
/* Аналитические функции (8)
Создать таблицу из произвольного количества >1000 строк с четырьмя полями: номер строки и четыре разных целых псевдослучайных числа в интервале от 1 до 100.
Вывести запросом:
- для первой строки – номер, первое число, второе число из следующей строки, третье число из следующей строки
- для последней строки – номер, первое число, второе число из предыдущей строки, третье число из предыдущей строки
- если первое число четное – номер, первое число, второе число из предыдущей строки, третье число из следующей строки
- если первое число нечетное – номер, первое число, второе число из следующей строки, третье число из предыдущей строки
*/
-- Создаем тестовые данные
CREATE TABLE tabnum (ID NUMBER GENERATED ALWAYS AS IDENTITY, num1 NUMBER, num2 NUMBER, num3 NUMBER, num4 NUMBER );
@aykononov
aykononov / report_for_marketing.sql
Last active November 14, 2019 18:21
Отчёт для отдела маркетинга
-- Создаем тестовые данные
CREATE TABLE clients (ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, NAME VARCHAR2(256));
INSERT INTO clients (NAME) VALUES ('ООО Экотранс');
INSERT INTO clients (NAME) VALUES ('ООО Аптека');
INSERT INTO clients (NAME) VALUES ('ИП Колесников');
INSERT INTO clients (NAME) VALUES ('ИП Яшин');
INSERT INTO clients (NAME) VALUES ('ИП Иванов');
INSERT INTO clients (NAME) VALUES ('ИП Нулевой');
CREATE TABLE kontakts ( ID NUMBER GENERATED ALWAYS AS IDENTITY START WITH 100,
@aykononov
aykononov / check_hull.sql
Created November 11, 2019 13:44
Проверка на NULL
SELECT DECODE( NULL
, 1
, 'ONE'
, NULL
, 'EMPTY' -- это условие будет истинным
, 'DEFAULT'
) dcd
FROM dual;
------------------------
@aykononov
aykononov / null_null.sql
Last active November 11, 2019 14:03
Каким будет результат?
DECLARE
t_r1 VARCHAR(2);-- NULL;
t_r2 VARCHAR(2);-- NULL;
BEGIN
IF t_r1 != t_r2 THEN
dbms_output.put_line('Не равны');
ELSIF t_r1 = t_r2 THEN
dbms_output.put_line('Равны');
ELSE
dbms_output.put_line('НЕИЗВЕСТНО');
@aykononov
aykononov / fnc_check_job.sql
Last active April 7, 2020 13:20
Функция для формирования отложенного задания (job).
/* Функция для формирования отложенного задания (job).
Входные данные: ID задания (уникальный идентификатор задания); дата/время запуска задания; pl/sql код, который нужно запустить.
Функция должна проверять, есть ли уже запланированное задание с указанным ID.
Если есть, то необходимо его обновить, иначе создать.
*/
CREATE OR REPLACE FUNCTION FNC_MAKE_JOB (
pJobNameID all_scheduler_jobs.job_name%TYPE,
pJobStartDate DATE,
pJobExecuteCode CLOB
)
@aykononov
aykononov / lag_lead_dates.sql
Last active November 11, 2019 13:34
LAG и LEAD аналитические функции
/* Выводит предыдущее, текущее и последующее значение даты */
WITH t AS (SELECT TRUNC(SYSDATE-1) + LEVEL sdate FROM dual CONNECT BY LEVEL <= 10 ORDER BY TRUNC(SYSDATE))
SELECT
LAG(t.sdate) OVER(ORDER BY t.sdate) prev_date
,t.sdate
,LEAD(t.sdate) OVER(ORDER BY t.sdate) next_date
FROM t;
@aykononov
aykononov / work_30days.sql
Last active April 7, 2020 13:22
Вывод, только рабочих дней на следующие 30 дней.
-- Вывод, только рабочих дней на следующие 30 дней.
SELECT *
FROM (
SELECT TRUNC(SYSDATE -1) + LEVEL ToDate,
to_char((TRUNC(SYSDATE -1) + LEVEL),'DY') AS ToDay
FROM dual CONNECT BY LEVEL <= 30
)
WHERE ToDay NOT IN ('СБ','ВС');
@aykononov
aykononov / fnc_PIPELINED.sql
Last active April 7, 2020 13:26
Метод PIPELINED.
/* Метод pipelined.
Имеется таблица dept со следующей структурой:
Name Type Nullable Default Comments
------ ------------ -------- ------- --------
DEPTNO NUMBER
DNAME VARCHAR2(14) Y
LOC VARCHAR2(13) Y