Как сделать запрос к трем таблицам, с отдельным JOIN по каждой и применить функцию агрегации к результату?
Привет всем знатокам SQL. Я новый в этом вопросе достаточно, по этому, прошу помощи.
У меня есть 3 инстансы:
instance_1,instance_2, instance_3
В каждом из них есть 2 таблицы:
crm, email
Т. е. в общей сложности, у меня есть 6 разных таблиц.
В таблице crm, есть поля device_id, carrier
В таблице email - поля device_id и md_5
Структура таблиц от инстанса к инстансу не меняется.
Задача: Мне надо вывести все md_5 из трех инстансов, где одному md_5 соответстует 2 и больше carrier (но не больше, чем 6). Объеденяю таюлицы по полю device_id.
Делаю вот как (с помощью bigQuery):
SELECT
crm.device_id,
crm.carrier,
email.md_5,
FROM `instance_1.crm` crm
FULL OUTER JOIN
`instance_1.email` email
ON crm.device_id = email.device_id
GROUP BY email.md_5
HAVING COUNT(crm.carrier)>=2
При выполениии кода, возникает ошибка
SELECT list expression references crm.device_id which is neither grouped nor aggregated at [2:1]
Почему возникает ошибка, как ее избежать и как объеденить в одну таблицу, результаты с 3-х инстансов? В моем примере есть данные только с одного инстанса.
Спасибо)
Ответы (1 шт):
Вот так попробуйте:
SELECT
MAX(crm.device_id),
COUNT(crm.carrier),
email.md_5,
FROM `instance_1.crm` crm
FULL OUTER JOIN `instance_1.email` email ON crm.device_id = email.device_id
GROUP BY email.md_5
HAVING COUNT(crm.carrier)>=2