Сегменты
Справочник «Сегменты» предназначен для группировки гостей и для создания целевой аудитории, которая будет участвовать в email, sms рассылке или акциях. Создаются сегменты SQL-запросами. Если в акции поле Сегмент не будет заполнено, то акция не отработает.
Вид справочника «Сегменты».

Флаг Активен - наличие флага в данном поле определяет, будет ли отображаться данный сегмент в акции.
Название – название сегмента, отображается в акциях.
Поле Комментарий - текстовая информация, относящаяся к сегменту.
В области SQL вводится sql-запрос.
В области Атрибуты отображаются атрибуты, задействованные в sql-запросе.
Чтобы удалить сегмент нужно нажать клавишу или воспользоваться пунктом «Удалить» контекстного меню. Удалить можно только неактивный сегмент.
Примеры сегментов
Примеры SQL запросов для выбора владельцев из базы данных в сегмент:
- Сегмент «Все владельцы».
select CP.PEOPLE_ID from CARD_PEOPLES CP
where CP.PEOPLE_ID = CP.PEOPLE_ID
- Сегмент «Мужчины».
select PEOPLE_ID from CARD_PEOPLES where SEX = 0
- Сегмент «Женщины».
select PEOPLE_ID from CARD_PEOPLES where SEX = 1
- Сегмент «Время суток». В примере приведен выбор гостей посетивших ресторан с 9:00 до 12:00 за период с 01.01.2015г. по 31.12.2015г. В данном запросе нельзя изменять структуру сегмента, кроме дат '2016-01-01' и времени '12:00:00', сохраняя формат ввода даты и времени.
select distinct PA.PEOPLE_ID from CARD_TRANSACTIONS CT
inner join CARD_PEOPLE_ACCOUNTS PA on (PA.PEOPLE_ACCOUNT_ID = CT.ACCOUNT_ID)
where CT.OPERATION_TYPE in (1,2)
and cast(CT.TRANSACTION_TIME as date) >= convert(date, '2015-01-01', 120)
and cast(CT.TRANSACTION_TIME as date) <= convert(date, '2015-12-31', 120)
and cast(CT.TRANSACTION_TIME as time) >= convert(time, '09:00:00', 120)
and cast(CT.TRANSACTION_TIME as time) <= convert(time, '12:00:00', 120)
- Сегмент «Дни недели» (1день – понедельник по 7день - воскресенье). В данном запросе указываются дни недели через запятую. В примере приведен выбор гостей посетивших в субботу и воскресенье за период с 01.01.2015г. по 31.12.2015г. В данном запросе нельзя изменять структуру сегмента, кроме дат '2016-01-01' и дней недели (5,6,7), сохраняя формат ввода даты и дней недели.
select distinct PA.PEOPLE_ID from CARD_TRANSACTIONS CT
inner join CARD_PEOPLE_ACCOUNTS PA on (PA.PEOPLE_ACCOUNT_ID = CT.ACCOUNT_ID)
where CT.OPERATION_TYPE in (1,2)
and case datepart(weekday, CT.TRANSACTION_TIME)
when datepart(weekday, convert(date, '2007-01-01', 120)) then 1
when datepart(weekday, convert(date, '2007-01-02', 120)) then 2
when datepart(weekday, convert(date, '2007-01-03', 120)) then 3
when datepart(weekday, convert(date, '2007-01-04', 120)) then 4
when datepart(weekday, convert(date, '2007-01-05', 120)) then 5
when datepart(weekday, convert(date, '2007-01-06', 120)) then 6
when datepart(weekday, convert(date, '2007-01-07', 120)) then 7 else null end
in (6,7)
and cast(CT.TRANSACTION_TIME as date) >= convert(date, '2015-01-01', 120)
and cast(CT.TRANSACTION_TIME as date) <= convert(date, '2015-12-31', 120)
- Сегмент «Код блюда». В запросе указывается период, и перечисляются через запятую коды блюд. В примере коды блюд 113, 114 и транзакции за период с 01.01.2015г. по 31.12.2015г. В данном запросе нельзя изменять структуру сегмента, кроме дат '2016-01-01' и кодов блюд (288,125), сохраняя формат ввода даты и кодов блюд.
select distinct PA.PEOPLE_ID from (
select distinct try_cast(T.c.query('.') as xml).value('(/LINE/@code)[1]', 'int') as Dish_Code, C.ACCOUNT_ID from (
select try_cast(substring(B.DOP_INFO, B.fXML + 2, len(B.DOP_INFO) - (B.fXML + 1)) as xml) as DOP_INFO, B.ACCOUNT_ID from
(select charindex('<?xml', A.DOP_INFO) as sXML, charindex('?>', A.DOP_INFO) as fXML, A.DOP_INFO, A.ACCOUNT_ID from
(select CT.ACCOUNT_ID, ltrim(TN.DOP_INFO) as DOP_INFO from CARD_TRANSACTIONS CT
inner join CARD_TRANSACTION_NOTES TN on (TN.TRANSACTION_ID = CT.TRANSACTION_ID and TN.DOP_INFO is not null)
where CT.OPERATION_TYPE in (1,2)
and cast(CT.TRANSACTION_TIME as date) >= convert(date, '2015-01-01', 120)
and cast(CT.TRANSACTION_TIME as date) <= convert(date, '2015-12-31', 120)) A) B
where B.sXML = 1) C
CROSS APPLY C.DOP_INFO.nodes('/CHECK/CHECKDATA/CHECKLINES/LINE') as T(c)
) D
inner join CARD_PEOPLE_ACCOUNTS PA on (PA.PEOPLE_ACCOUNT_ID = D.ACCOUNT_ID)
where D.Dish_Code in (113, 114)
- Сегмент «Атрибут». В запросе учувствуют атрибуты (например, Семейные мероприятия). В данном запросе нельзя изменять структуру сегмента, кроме кода атрибута , сохраняя формат ввода (0x0000000000000008 as bigint) .
where
ATTRIBUTE_A & cast(0x0000000000000008 as bigint) > 0
