Я работаю в сфере подбора персонала и хотел бы получить список вакансий, размещенных в нескольких офисах, вместе с названиями этих офисов для каждой вакансии.
Я начал с запроса ниже, чтобы определить вакансии в нескольких офисах. Каков мой следующий шаг, чтобы показывать office.name только для вакансий с несколькими офисами? Бонус, если я могу получить по одной записи на каждую вакансию, а названия офисов будут заполнены столбцами. Я использую SQL Workbench, подключенный к Amazon Redshift. Большое спасибо!
select jobs_offices.job_id, count(offices.id)
from jobs_offices join offices on jobs_offices.office_id = offices.id
group by jobs_offices.job_id
having count(offices.id) >1
order by count(offices.id) DESC


Ваш запрос пока выглядит хорошо, в нем просто отсутствует название офиса? Я считаю, что вы можете получить список офисов, разделенных запятыми, добавив функцию listagg. Что-то вроде select jobs_offices.job_id, listagg(offices.name, ', ') from ...
Спасибо за ваш ответ. Добавление office.name дает мне только те вакансии, в которых один и тот же офис указан более одного раза.
и спасибо за функцию listagg. Я обязательно этим воспользуюсь!
вы можете использовать коррелированный подзапрос
select t.* from offices t
where exists ( select 1 from jobs_offices t1 where t1.office_id=t.id
group by t1.job_id
having count(*) >1
)
Спасибо! Похоже, Amazon еще не поддерживает этот тип запросов. [Amazon] (500310) Недопустимая операция: этот тип коррелированного шаблона подзапроса еще не поддерживается. Есть идеи, как обойти ограничения Amazon?
В конечном итоге я пытаюсь определить, есть ли какие-либо вакансии, размещенные одновременно в EMEA, AMER и / или APAC. Я создаю панель управления Tableau, и мне нужно сгруппировать задания по офисам (EMEA, AMER и / или APAC), и я надеюсь просто перенести офисные данные в Tableau с помощью max (office), чтобы избежать множественных записей. Если в этом есть смысл!