Справка по подзапросам SQL для новичков

Я работаю в сфере подбора персонала и хотел бы получить список вакансий, размещенных в нескольких офисах, вместе с названиями этих офисов для каждой вакансии.

Я начал с запроса ниже, чтобы определить вакансии в нескольких офисах. Каков мой следующий шаг, чтобы показывать 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

В конечном итоге я пытаюсь определить, есть ли какие-либо вакансии, размещенные одновременно в EMEA, AMER и / или APAC. Я создаю панель управления Tableau, и мне нужно сгруппировать задания по офисам (EMEA, AMER и / или APAC), и я надеюсь просто перенести офисные данные в Tableau с помощью max (office), чтобы избежать множественных записей. Если в этом есть смысл!

WilsonS 06.11.2018 20:25
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
48
2

Ответы 2

Ваш запрос пока выглядит хорошо, в нем просто отсутствует название офиса? Я считаю, что вы можете получить список офисов, разделенных запятыми, добавив функцию listagg. Что-то вроде select jobs_offices.job_id, listagg(offices.name, ', ') from ...

Документы Redshift

Спасибо за ваш ответ. Добавление office.name дает мне только те вакансии, в которых один и тот же офис указан более одного раза.

WilsonS 06.11.2018 20:40

и спасибо за функцию listagg. Я обязательно этим воспользуюсь!

WilsonS 06.11.2018 20:41

вы можете использовать коррелированный подзапрос

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?

WilsonS 06.11.2018 20:45

Другие вопросы по теме