Запрос: select coalesce(1, 2) where 1=0
Anonymous Quiz
20%
Вернет null
5%
Вернет 0
7%
Вернет 1
7%
Вернет 2
62%
Вернет пустой набор данных (0 строк)
Быстрый способ заполнить коллекцию данными, полученными из SQL-запроса, — использовать BULK COLLECT.
Например:
В результате все полученные
Например:
declare
type t_customer_list is table of number;
l_customer_list t_customer_list := t_customer_list();
begin
select distinct i.customer_id
bulk collect
into l_customer_list
from ipdr i
where i.start_time >= date '2026-01-01'
and i.end_time < date '2026-02-01';
end;В результате все полученные
CUSTOMER_ID будут загружены в коллекцию l_customer_list.👍4
Всем привет!
Как насчет очередной задачки по SQL? 😎
В таблице rate_periods есть данные вида:
id date_from date_to rate
1 09.02.2026 12.02.2026 4.1
2 13.02.2026 19.02.2026 4.1
3 20.02.2026 23.02.2026 4.2
4 24.02.2026 04.03.2026 4.3
5 05.03.2026 11.03.2026 4.31
6 15.03.2026 16.03.2026 4.31
7 17.03.2026 22.03.2026 4.31
8 23.03.2026 25.03.2026 4.31
Требуется написать запрос, который вывел бы периоды и действующие тарифы в этих периодах. Запрашиваются столбцы date_from, date_to и rate. Подряд идущие периоды (следующий период начинается сразу со следующего дня после окончания предыдущего периода) с одинаковым тарифом требуется объединить в один. В примере выше строки 1 и 2 должны объединиться в одну. Date_from общей строки будет 09.02.2026, а Date_to 19.02.2026. Также строки 6, 7 и 8 тоже должны объединиться в одну строку.
Как насчет очередной задачки по SQL? 😎
В таблице rate_periods есть данные вида:
id date_from date_to rate
1 09.02.2026 12.02.2026 4.1
2 13.02.2026 19.02.2026 4.1
3 20.02.2026 23.02.2026 4.2
4 24.02.2026 04.03.2026 4.3
5 05.03.2026 11.03.2026 4.31
6 15.03.2026 16.03.2026 4.31
7 17.03.2026 22.03.2026 4.31
8 23.03.2026 25.03.2026 4.31
Требуется написать запрос, который вывел бы периоды и действующие тарифы в этих периодах. Запрашиваются столбцы date_from, date_to и rate. Подряд идущие периоды (следующий период начинается сразу со следующего дня после окончания предыдущего периода) с одинаковым тарифом требуется объединить в один. В примере выше строки 1 и 2 должны объединиться в одну. Date_from общей строки будет 09.02.2026, а Date_to 19.02.2026. Также строки 6, 7 и 8 тоже должны объединиться в одну строку.
При выполнении SQL запроса из некоторой таблицы, оптимизатор может знать об индексе, который мог бы быть использован, но не использовать его. Если индекс указывает на большую часть строк таблицы (например, на треть или половину строк таблицы), обращение к индексу может оказаться менее эффективным, чем полное сканирование таблицы.
Поэтому наличие индекса ещё не гарантирует его использование. 😉 Оптимизатор сравнивает разные варианты выполнения запроса и выбирает тот, который, по его расчётам, будет наиболее быстрым.
Поэтому наличие индекса ещё не гарантирует его использование. 😉 Оптимизатор сравнивает разные варианты выполнения запроса и выбирает тот, который, по его расчётам, будет наиболее быстрым.
😱3
В таблице справочнике товаров добавили новый столбец current_amount для хранения текущего количества товаров. Теперь отбирать товары с остатками стало проще. Раньше требовалось по каждому товару суммировать все приходы и отнимать все расходы.
Ilia Khokhlov 👨💻
Всем привет! Как насчет очередной задачки по SQL? 😎 В таблице rate_periods есть данные вида: id date_from date_to rate 1 09.02.2026 12.02.2026 4.1 2 13.02.2026 19.02.2026 4.1 3 20.02.2026 23.02.2026 4.2 4 24.02.2026 04.03.2026…
Эту и другие интересные задачи порешаем на нашем трехдневном тренинге по SQL!
Начинаем сегодня в 19:00. Будем заниматься через Zoom сегодня, в среду и пятницу (19:00 - 20:00).
Записаться и оплатить участие можно здесь.
Места ещё есть!
Начинаем сегодня в 19:00. Будем заниматься через Zoom сегодня, в среду и пятницу (19:00 - 20:00).
Записаться и оплатить участие можно здесь.
Места ещё есть!
В таблице TableA 3 строки, в таблице TableB 4 строки. Сколько записей минимум и сколько записей максимум
будет при соединении через full join:
будет при соединении через full join:
Anonymous Quiz
6%
min 0, max 3
7%
min 0, max 4
4%
min 0, max 7
21%
min 0, max 12
6%
min 3, max 4
6%
min 3, max 7
15%
min 3, max 12
8%
min 4, max 7
15%
min 4, max 12
12%
min 7, max 12
❤2
Как найти клиентов, у которых не было заказов?
A:
SELECT c.*
FROM clients c
JOIN orders o ON o.client_id = c.id
WHERE o.id IS NULL;
B:
SELECT c.*
FROM clients c
LEFT JOIN orders o ON o.client_id = c.id
WHERE o.id IS NULL;
C:
SELECT c.*
FROM clients c
RIGHT JOIN orders o ON o.client_id = c.id
WHERE o.id IS NULL;
D:
SELECT c.*
FROM clients c
WHERE c.id IN (
SELECT client_id
FROM orders
);
A:
SELECT c.*
FROM clients c
JOIN orders o ON o.client_id = c.id
WHERE o.id IS NULL;
B:
SELECT c.*
FROM clients c
LEFT JOIN orders o ON o.client_id = c.id
WHERE o.id IS NULL;
C:
SELECT c.*
FROM clients c
RIGHT JOIN orders o ON o.client_id = c.id
WHERE o.id IS NULL;
D:
SELECT c.*
FROM clients c
WHERE c.id IN (
SELECT client_id
FROM orders
);
Как найти клиентов, у которых не было заказов?
Anonymous Quiz
12%
Вариант A
68%
Вариант B
12%
Вариант C
8%
Вариант D
У клиента с идентификатором 10 нет ни одного заказа. С каким значением в столбце ORDERS_CNT он отобразится в результате выполнения следующего запроса:
SELECT c.id, COUNT(*) ORDERS_CNT
FROM clients c
LEFT JOIN orders o
ON o.client_id = c.id
GROUP BY c.id;
С каким значением в столбце ORDERS_CNT клиент с идентификатором 10 отобразится в запросе?
Anonymous Quiz
13%
Клиент с идентификатором 10 не отобразится в результате
22%
Отобразится со значением Null
40%
Отобразится со значением 0
21%
Отобразится со значением 1
4%
Отобразится со значением 10
Всем привет!
Мини тест по базовый знаниям PL/SQL (ORACLE):
Как правильно обработать ситуацию, когда
Мини тест по базовый знаниям PL/SQL (ORACLE):
Как правильно обработать ситуацию, когда
SELECT INTO не нашёл строку?SELECT salary
INTO v_salary
FROM employees
WHERE employee_id = 100;Как правильно обработать ситуацию, когда SELECT INTO не нашёл строку?
Anonymous Quiz
6%
IF SQL%NOTFOUND THEN сразу после SELECT
36%
EXCEPTION WHEN NO_DATA_FOUND THEN
5%
EXCEPTION WHEN SQL%NOTFOUND THEN
9%
WHEN NOT_FOUND THEN
43%
Никак — SELECT INTO автоматически возвращает NULL
Media is too big
VIEW IN TELEGRAM
Всем привет!
Записал небольшое видео про оптимизацию SQL запросов!
Записал небольшое видео про оптимизацию SQL запросов!
🔥9
Есть таблица orders:
Задача: найти клиентов, у которых сумма заказов в феврале больше, чем в январе.
Какой запрос правильный?
A.
SELECT customer_id
FROM orders
WHERE EXTRACT(MONTH FROM order_date) = 2
GROUP BY customer_id
HAVING SUM(amount) > SUM(amount);
B.
SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING SUM(CASE WHEN EXTRACT(MONTH FROM order_date) = 2 THEN amount ELSE 0 END)
> SUM(CASE WHEN EXTRACT(MONTH FROM order_date) = 1 THEN amount ELSE 0 END);
C.
SELECT customer_id
FROM orders
WHERE EXTRACT(MONTH FROM order_date) = 2
AND SUM(amount) > (
SELECT SUM(amount)
FROM orders
WHERE EXTRACT(MONTH FROM order_date) = 1
)
GROUP BY customer_id;
D.
SELECT customer_id
FROM orders
WHERE EXTRACT(MONTH FROM order_date) IN (1, 2)
GROUP BY customer_id
HAVING SUM(amount) > 0;
id customer_id order_date amount
1 101 2026-01-10 1000
2 101 2026-01-15 500
3 102 2026-01-20 2000
4 103 2026-02-01 300
5 101 2026-02-10 700
Задача: найти клиентов, у которых сумма заказов в феврале больше, чем в январе.
Какой запрос правильный?
A.
SELECT customer_id
FROM orders
WHERE EXTRACT(MONTH FROM order_date) = 2
GROUP BY customer_id
HAVING SUM(amount) > SUM(amount);
B.
SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING SUM(CASE WHEN EXTRACT(MONTH FROM order_date) = 2 THEN amount ELSE 0 END)
> SUM(CASE WHEN EXTRACT(MONTH FROM order_date) = 1 THEN amount ELSE 0 END);
C.
SELECT customer_id
FROM orders
WHERE EXTRACT(MONTH FROM order_date) = 2
AND SUM(amount) > (
SELECT SUM(amount)
FROM orders
WHERE EXTRACT(MONTH FROM order_date) = 1
)
GROUP BY customer_id;
D.
SELECT customer_id
FROM orders
WHERE EXTRACT(MONTH FROM order_date) IN (1, 2)
GROUP BY customer_id
HAVING SUM(amount) > 0;
Какой запрос правильный?
Anonymous Quiz
5%
Вариант "A"
53%
Вариант "B"
37%
Вариант "C"
5%
Вариант "D"
👍1
Какова основная цель нормализации реляционной базы данных?
Anonymous Quiz
86%
Уменьшить избыточность данных и избежать аномалий изменения
4%
Увеличить количество дублирующихся данных
1%
Отказаться от первичных и вешних ключей
8%
Ускорить выполнение абсолютно всех SQL запросов