【发布时间】:2021-09-11 16:29:06
【问题描述】:
我有下表:
CREATE TABLE COST1 (
REGION,
IS_SERVICED,
)
IS_SERVICED 为真或假。地区不是唯一的。我想返回一个包含 3 列的数据集;地区,COUNT_TRUE,COUNT_FALSE。如果我需要放置位置/有条件来识别其中一个,我如何编写一个查询来生成按区域分组的真假计数。
我可以使用多个 CTE 执行此操作,如下所示:
WITH TRUE_COUNT_TABLE (REGION, TRUE_COUNT) AS
(SELECT REGION, count(*) FROM TABLE1
WHERE IS_SERVICED like 'TRUE'
GROUP BY REGION),
FALSE_COUNT_TABLE (REGION, FALSE_COUNT) AS
(SELECT REGION, count(*) FROM TABLE1
WHERE IS_SERVICED like 'FALSE'
GROUP BY REGION)
SELECT REGION, TRUE_COUNT, FALSE_COUNT FROM TRUE_TABLE t JOIN FALSE_TABLE f
ON t.REGION = f.REGION;
有没有办法在单个查询中做到这一点? (另外,我使用WHERE是正确的,还是应该在这里使用HAVING?)
【问题讨论】: