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

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

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

  1. select bkng_date,count(*) as cnt
  2. from tab_bkng_det
  3. group by bkng_date;

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

mrzz3bfm

mrzz3bfm1#

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

  1. select x.bkng_date, x.cnt from (
  2. select bkng_date,count(*) as cnt
  3. from tab_bkng_det
  4. group by bkng_date
  5. ) x
  6. where x.cnt = 2

  1. with x as (
  2. select bkng_date,count(*) as cnt
  3. from tab_bkng_det
  4. group by bkng_date
  5. )
  6. select * from x where cnt = 2
展开查看全部
oxcyiej7

oxcyiej72#

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

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

相关问题