zoukankan      html  css  js  c++  java
  • 开窗函数

    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
  • 相关阅读:
    POJ 1236 Network of Schools(强连通分量缩点求根节点和叶子节点的个数)
    文本编辑器vim和gedit
    Ubuntu安装tensorflow
    剑指offer——python【第29题】最小的K个数
    剑指offer——python【第30题】连续子数组的最大和
    剑指offer——python【第37题】数字在排序数组中出现的次数
    剑指offer——python【第28题】数组 中出现次数超过一半的数字
    剑指offer——python【第31题】整数1出现的次数
    剑指offer——python【第54题】字符流中第一个不重复的字符
    剑指offer——python【第40题】数组中只出现一次的数字
  • 原文地址:https://www.cnblogs.com/intheway/p/8746110.html
Copyright © 2011-2022 走看看