使用 group by 进行 2 个 SQL 查询之间的减法

Sha*_*arp 2 t-sql sql-server

如何使用 group by 在 2 个查询的结果之间执行减法?

第一个查询返回所有房屋的数量,比如说我可以出租的房屋数量,而第二个查询则返回已出租的房屋数量。

SELECT
    (SELECT COUNT(*) FROM ... GroupBy ...)
      - (SELECT COUNT(*) FROM ... WHERE ...group by) AS Difference
Run Code Online (Sandbox Code Playgroud)

第一个查询结果

count() column2    column3
 3       studio     newYork
 6       studio     pekin
 3       apprtment  pekin
 5       house      london
 1       house      lagos
Run Code Online (Sandbox Code Playgroud)

第二次查询结果

count() column2    column3
 2       studio     newYork
Run Code Online (Sandbox Code Playgroud)

我希望第一个查询根据第二个查询的结果进行更新

count() column2    column3
 1       studio     newYork
 6       studio     pekin
 3       apprtment  pekin
 5       house      london
 1       house      lagos
Run Code Online (Sandbox Code Playgroud)

Tim*_*sen 5

只需使用条件聚合:

SELECT COUNT(*) -
       SUM(CASE WHEN <some_condition> THEN 1 ELSE 0 END) AS some_count,
       column2,
       column3
FROM yourTable
GROUP BY column2, column3
Run Code Online (Sandbox Code Playgroud)

以下是原始第二个计数查询的子句<some_condition>中出现的内容。WHERE