在 Sql 服务器中交叉应用与 CTE

Cross apply vs CTE in Sql Server

我有两个table
第一个 table 被命名为:tblprovince

create table (
    provinceid int not null primary key (1,1) ,
    provinceNme nvarchar(max),
    description nvarchar(max))

第二个 table 名为 tblcity:

create table tblcity(
    cityid int identity (1,1), 
    CityName nvarchar(max), 
    population int, 
    provinceid int foreign key references tblprovince(provinceid)
);

我需要列出所有至少有两个大城市的省份。大城市被定义为拥有至少一百万居民的人口。查询必须return以下列:

select p.provinceId, p.provincename, citysummary.LargeCityCount
from tblprovince p 
cross apply ( 
select count(*) as LargeCityCount from tblcity c 
 where c.population >= 1000000 and c.provinceid=p.provinceid
) citysummary 
where citysummary.LargeCityCount

这个查询是否正确?
还有其他方法可以让我实现我的目标吗?

SELECT tp.provinceid, tp.provinceNme, COUNT(tc.cityid) AS largecitycount 
FROM tblprovince tp INNER JOIN
tblcity tc ON tc.provinceid=tp.provinceid
WHERE tc.population>=1000000
GROUP BY tp.provinceid, tp.provinceNme
HAVING COUNT(tc.cityid)>1