Задать вопрос

Как проверить несколько условий в having при использовании array_agg?

у таблицы sets есть ещё колонка group, который может быть 1 или 2.
Каким образом переписать запрос, чтобы учитывать не только то, что найденные строки содержат массив ARRAY[1,2,3], а ещё и все принадлежат только к одной из групп(1 или 2)

SELECT country_id FROM countries 
WHERE EXISTS 
  (SELECT 1 FROM sets 
  WHERE (sets.country_id = countries.country_id AND sets.is_used = true) 
  HAVING(array_agg(sets.city_id) @> ARRAY[1, 2, 3]))
  • Вопрос задан
  • 1040 просмотров
Подписаться 2 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Инженер по тестированию
    5 месяцев
    Далее
  • Яндекс Практикум
    Java-разработчик
    10 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@ponaehal
Насколько я помню молодость HAVING фильтрует по значениям агрегаторов (SUM, MAX и т.д.), а в вашем случае нужно просто добавить фильтр в условие WHERE .... AND group in (1,2)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы