CREATE VIEW A1 AS
SELECT client_ID , COUNT(dog_id)
FROM test_clients
GROUP BY client_ID
HAVING COUNT(dog_id)=2;
CREATE VIEW A2 AS
SELECT filial , COUNT(A1.client_ID)
FROM A1
JOIN test_clients USING (client_ID)
GROUP BY filial
HAVING COUNT(A1.client_ID)>10;
SELECT COUNT(filial)
FROM A2;
据我所知,这可以通过子查询来完成,但如何实现呢?
2条答案
按热度按时间enyaitl31#
燃烧到:
假设
filial
定义为NOT NULL
。使用窗口函数并去掉自连接可能会更快:
根据您确切的表定义,我们可能能够进一步优化...
0vvn1miw2#
欧文建议的一个小小的折射器,只是给你玩玩...
外部查询起作用的原因是...
COUNT() OVER ()
)你可能想要也可能不想要
COUNT(DISTINCT client_id)
,这还不清楚。所以,也玩一下那个。我不是说它更好,只是说它不同,可能有助于你的学习。