Мне нужно создать столбцы, полученные из значений массива в записи.В следующей таблице примеров есть 4 записи, которые называются «сессиями», и у каждой сессии есть несколько посещенных значений приложения (onlineshop или nativeapp).В производном столбце я хочу иметь значение «1», если в этом сеансе есть хотя бы одна запись «nativeapp».Во втором столбце мне нужно иметь «1», если все записи «nativeapp».Иначе значение должно быть «0».
WITH TESTTABLE AS (
SELECT 'session A' AS session, SPLIT("onlineshop,onlineshop") AS application, 8 AS point UNION ALL
SELECT 'session B' AS session, SPLIT("onlineshop,nativeapp") AS application, 9 AS point UNION ALL
SELECT 'session C' AS session, SPLIT("onlineshop,nativeapp") AS application, 5 AS point UNION ALL
SELECT 'session D' AS session, SPLIT("nativeapp") AS application, 4 AS point
)
Моя попытка состояла в том, чтобы сделать подзапрос «select ...», который фильтрует записи ... однако мне нужно было бы иметь ссылку на подзапрос.к его записи, но на самом деле это только «1», если любая запись во всей таблице соответствует подзапросу.
SELECT *, (SELECT MAX(IF(appEntry LIKE "%nativeapp%", 1, 0 )) FROM TESTTABLE, UNNEST(application) as appEntry) as isNativeSession FROM TESTTABLE
Таким образом, результат должен быть:
