CREATE TABLE #T_Person
(
FName VARCHAR(20),
FCity VARCHAR(20),
FAge INT,
FSalary INT
)
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('Tom','BeiJing',20,3000);
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('Tim','ChengDu',21,4000);
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('Jim','BeiJing',22,3500);
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('Lily','London',21,2000);
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('John','NewYork',22,1000);
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('YaoMing','BeiJing',20,3000);
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('Swing','London',22,2000);
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('Guo','NewYork',20,2800);
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('YuQian','BeiJing',24,8000);
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('Ketty','London',25,8500);
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('Kitty','ChengDu',25,3000);
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('Merry','BeiJing',23,3500);
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('Smith','ChengDu',30,3000);
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('Bill','BeiJing',25,2000);
INSERT INTO #T_Person(FName,FCity,FAge,FSalary)
VALUES('Jerry','NewYork',24,3300);
SELECT count(*) FROM #T_Person
/*
查询每个工资小于 5000元的员工信息(城市以及年龄) ,并且在
每行中都显示所有工资小于5000元的员工个数
*/
WITH tempCity AS
(
SELECT a.*
FROM #T_Person a
WHERE FSalary<5000
)
SELECT a.FCITY , a.FAGE, COUNT(*) CountGroup, (SELECT COUNT(*) FROM tempCity ) CountTotal
FROM #T_Person a
INNER JOIN tempCity b ON b.FCity=a.FCity AND b.FName=a.FName AND b.FAge=a.FAge
GROUP BY a.FCity, a.FAge
SELECT * FROM #T_Person ORDER BY FCity, FSalary
/*
查询每个工资小于 5000元的员工信息(城市以及年龄) ,并且在
每行中都显示所有工资小于5000元的员工个数
*/
SELECT FCITY , FAGE , COUNT(*) CountGroup,
(
SELECT COUNT(* ) FROM #T_Person
WHERE FSALARY<5000
) CountTotal
FROM #T_Person
WHERE FSALARY<5000
GROUP BY FCITY , FAGE
/*
使用开窗函数
*/
SELECT FCity, FAge, COUNT(*) OVER()
FROM #T_Person
WHERE FSalary<5000
ORDER BY FCity, FAge
/*
使用开窗函数
*/
SELECT FCity, FAge, COUNT(*) OVER(PARTITION BY FCity)
FROM #T_Person
WHERE FSalary<5000
ORDER BY FCity, FAge