Справочник «Сегменты» предназначен для группировки гостей и для создания целевой аудитории, которая будет участвовать в 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) .
select PEOPLE_ID from CARD_PEOPLES
where
ATTRIBUTE_A & cast(0x0000000000000008 as bigint) > 0