Получение результата на основе другого SQL запроса - PullRequest
0 голосов
/ 13 июля 2020

У меня есть таблица со следующими столбцами:

  • bkng_date
  • bkng_id (varchar)
  • villa_id (varchar)

Этот запрос

select bkng_date,count(*) as cnt 
from tab_bkng_det 
group by bkng_date;

возвращает количество записей для каждой даты в виде count.

Теперь мне нужно найти даты в наборе результатов этого запроса where cnt = 2.

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

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Лучший вариант - использовать условие наличия следующим образом:

select bkng_date,count(*) as cnt 
from tab_bkng_det 
group by bkng_date
having count(*) = 2
0 голосов
/ 13 июля 2020

Самым простым, правильным и безопасным решением является добавление предложения having count(*) = 2, как сказал Гордон.

Для полноты картины, если вам интересно, как решить эту проблему с помощью подзапросов (вы не предоставили поставщика своей базы данных, хотя это очень вероятно, что ваш поставщик поддерживает пункт having), это будет:

select x.bkng_date, x.cnt from (
  select bkng_date,count(*) as cnt 
  from tab_bkng_det 
  group by bkng_date
) x
where x.cnt = 2

или

with x as (
  select bkng_date,count(*) as cnt 
  from tab_bkng_det 
  group by bkng_date
)
select * from x where cnt = 2
...