• 开窗函数


    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
  • 相关阅读:
    CodeCraft-19 and Codeforces Round #537 (Div. 2) C. Creative Snap
    51nod 1007正整数分组(01背包变形)
    51nod 1007正整数分组(01背包变形)
    Codeforces Round #533 (Div. 2) C. Ayoub and Lost Array
    Codeforces Round #533 (Div. 2) C. Ayoub and Lost Array
    小a与星际探索
    小a与星际探索
    poj3764
    心理博弈
    4级
  • 原文地址:https://www.cnblogs.com/intheway/p/8746110.html
Copyright © 2020-2023  润新知