6 лет назад
Как сравнить диапазон целочисленных значений в 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).