基于另一个sql查询的计数获取结果

5f0d552i  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(308)

我有一个包含以下列的表:
bkng\ U日期
bkng\ U id(varchar)
别墅(varchar)
此查询

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

返回每个日期的记录数作为计数。
现在我需要在这个查询的结果集中找到日期 where cnt = 2 .
我尝试了几个子查询,但没有得到想要的结果。

mrzz3bfm

mrzz3bfm1#

最简单、正确和安全的解决方案是添加 having count(*) = 2 正如戈登所说。
为了完整性,如果您想知道如何使用子查询解决这个问题(您没有提供db供应商,但很可能您的供应商支持) 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
oxcyiej7

oxcyiej72#

最好的选择是使用having子句,如下所示,

select bkng_date,count(*) as cnt 
from tab_bkng_det 
group by bkng_date
having count(*) = 2

相关问题