Курс по SQL - урок 3 - Фильтрация данных в sql таблицах.
Как сравнить диапазон целочисленных значений в PL / SQL?
Я пытаюсь сравнить диапазон целочисленных значений между тестовой таблицей и справочной таблицей. Если какой-либо диапазон значений из тестовой таблицы перекрывается с доступными диапазонами в справочной таблице, ее следует удалить. Извините, если это не ясно, но вот пример данных: <Сильный> test_table: MIN MAX
10 121
122 648
1200 1599
<Сильный> REFERENCE_TABLE: MIN MAX
50 106
200 1400
1450 1500
MODIFIED TEST_TABLE: (ожидаемый результат после запуска PL / SQL) MIN MAX
10 49
107 121
122 ...
Условие вхождения в диапазон Условие вхождения в диапазон в SQL проверяется с помощью оператора BETWEEN. Для демонстрации оператора подготовим таблицу, хранящую данные о рыночных котировках CREATE TABLE dayquotes ( ticker VARCHAR(6) NULL, quote_date DATE NULL, o NUMERIC(16, 4) NULL, -- open h NUMERIC(16, 4) NULL, -- high l NUMERIC(16, 4) NULL, -- low c NUMERIC(16, 4) NULL, -- close v NUMERIC(16, 4) NULL -- volume ); и заполним эту таблицу данными. INSERT INTO dayquotes (ticker, quote_date, o, h, l, c, v) VALUES ('XAUUSD','2023-11-16',1960.35000,1987.94000,1956.24000,1981.13000,293027), ('SBER','2023-11-16',282.40,283.69,279.56,279.70,2469660), ('RUAL','2023-11-16',39.335,39.430,38.965,39.035,663055), ('XAUUSD','2023-11-17',1981.11000,1993.39000,1978.34000,1980.33000,281430), ('SBER','2023-11-17',279.70,282.50,278.66,281.60,3132232), ('RUAL','2023-11-17',39.035,39.300,38.685,39.040,797789); Для выборки котировок с ценой открытия от 30 до 40 нужно выполнить запрос SELECT * FROM dayquotes WHERE o BETWEEN 30 AND 40 ; Результатом запроса будет выборка котировок бумаг Русал (RUAL).