在 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以下列:
- tblProvince.ProvinceId
- tblProvince.ProvinceName
- 名为 LargeCityCount 的派生列,显示该省大城市的总数
〇
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
我有两个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以下列:
- tblProvince.ProvinceId
- tblProvince.ProvinceName
- 名为 LargeCityCount 的派生列,显示该省大城市的总数
〇
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