SQL – Practice Queries

 SQL – Row Number, Rank, Dense Rank

— Create Employee Table

  CREATE TABLE Employee
  (EmployeeID smallint NOT NULL,
  Name nvarchar(50) NOT NULL,
  DeptID smallint NULL,
  Salary integer NULL
  );

— Insert data

  INSERT INTO Employee(EmployeeID,Name,DeptID,Salary)
  VALUES(1,’Mia’,’5′,50000);
  INSERT INTO Employee(EmployeeID,Name,DeptID,Salary)
  VALUES(2,’Adam’,’2′,50000);
  INSERT INTO Employee(EmployeeID,Name,DeptID,Salary)
  VALUES(3,’Sean’,’5′,60000);
  INSERT INTO Employee(EmployeeID,Name,DeptID,Salary)
  VALUES(4,’Robert’,’2′,50000);
  INSERT INTO Employee(EmployeeID,Name,DeptID,Salary)
  VALUES(5,’Jack’,’2′,45000);
  INSERT INTO Employee(EmployeeID,Name,DeptID,Salary)
  VALUES(6,’Neo’,’5′,60000);
  INSERT INTO Employee(EmployeeID,Name,DeptID,Salary)
  VALUES(7,’Jennifer’,’2′,55000);
  INSERT INTO Employee(EmployeeID,Name,DeptID,Salary)
  VALUES(8,’Lisa’,’2′,85000);
  INSERT INTO Employee(EmployeeID,Name,DeptID,Salary)
  VALUES(9,’Martin’,’2′,35000);
  INSERT INTO Employee(EmployeeID,Name,DeptID,Salary)
  VALUES(10,’Terry’,’5′,90000);
  INSERT INTO Employee(EmployeeID,Name,DeptID,Salary)
  VALUES(12,’David’,’5′,60000);

— RowNumber, Rank and Dense_Rank

  Select EmployeeID, Name, DeptID, Salary ,
  Row_Number() OVER (PARTITION BY DEPTID ORDER BY SALARY) AS RANK1
  ,RANK() OVER (PARTITION BY DEPTID ORDER BY SALARY) AS RANK2
  ,DENSE_RANK() OVER (PARTITION BY DEPTID ORDER BY SALARY) AS RANK3
  FROM EMPLOYEE;