Примеры запросов по БД SALES
Финансовые отчеты
Требуется сводка за различные периоды времени. Например, для получения количества и сумм продаж электроники по годам за период с 1 января 2013 по 31 декабря 2015, можно выполнить такой запрос:

Чтобы получить значения, пригодные для группировки по различным календарным периодам, пришлось воспользоваться встроенной в РЕД Базу Данных функцией работы с датами EXTRACT. Если в запросе потребуется группировка по более мелким периодам, может оказаться выгоднее и удобнее (чтобы не повторять вызов функции в каждом запросе) создать специальное представление с полным набором полей с периодами группировки:
CREATE OR ALTER VIEW SALES_DATE_PARTS
(SYEAR, SMONTH, SDAY, SHOUR, SWDAY, SYDAY, SQTR, SREC_ID, SALE_DATE, PURCHASEVIA,
STORELOCATION, WITHCOUPON, CUST_REF, SATISFACTED, OID)
AS
select
extract(YEAR from r.SALE_DATE) syear,
extract(MONTH from r.SALE_DATE) smonth,
extract(DAY from r.SALE_DATE) sday,
extract(HOUR from r.SALE_DATE) shour,
extract(WEEKDAY from r.SALE_DATE) swday,
extract(YEARDAY from r.SALE_DATE) syday,
extract(QUARTER from r.SALE_DATE) sqtr,
r.*
from SALE_RECORDS r ;

Список товаров и категорий
В демонстрационной БД названия товаров содержатся в строках каждого заказа в таблице ITEMS, а категории товара определяются списком тегов.

Обратите внимание, что теги-категории в каждой записи собраны в массив, что делает неудобным получение выборки данных по значениям отдельных тегов. Для таких выборок желательно “развернуть” каждую запись с массивом в несколько строк с единственным значением тега в каждой.
Развертывание по тегам
Наиболее удобным способом для этого оказалось применение уже знакомых операторов SQL/JSON.
--
-- развертывание массива IT_TAGS
--
select *
from
(select * from items) m,
JSON_TABLE(
m.IT_TAGS,
'$[*]' as tgs COLUMNS (w_tags varchar(50) PATH '$[*]' ) --OMIT QUOTES )
) as jt;

В демонстрационной БД SALES в таблице ITEMS находится почти 27500 записей, из которых после развертывания получается 84618. Это увеличение числа записей следует учитывать.
Топ 10 за период
Покупателей

Товаров

Лучшие продажи отдельных товаров по годам

Статистика за период
Число покупателей М/Ж рода за период
with salesfordates as (
select * from SALE_RECORDS where sale_date between ? and ?
),
dist_customers as (
select distinct email, gender, age
from salesfordates r join cust c
on cust_ref = c.id
)
select dc.gender, count(*)
from dist_customers dc
group by dc.gender;

Статистика продаж складов
with stotals as (
select sale_ref, sum(IT_PRICE*IT_QUANT) sale_tot
from ITEMS
group by sale_ref)
select
r.STORELOCATION, count(*) sqty, sum(t.sale_tot) stotal
from SALE_RECORDS r join stotals t on t.sale_ref = r.SREC_ID
group by r.STORELOCATION
order by stotal desc

Динамика продаж складов по дням/ месяцам/годам
По годам.

По месяцам
Если раскомментировать --sdp.SMONTH, получится значительно более длинный список, сгруппированный по каждому месяцу в году.
Продажи по сравнению с прошлым периодом

Продажи по годам в разрезе тегов

Дата последнего изменения: 11.09.2026
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.