1. How to get nth highest salary of employee
WITH CTE AS
(
SELECT empid,empSalary,
RN = DENSE_RANK() OVER (ORDER BY empSalary DESC)
FROM dbo.tblEmpDetails
)
SELECT *
FROM CTE
WHERE RN = nth value
2. What is CURSOR in sql server.
WITH CTE AS
(
SELECT empid,empSalary,
RN = DENSE_RANK() OVER (ORDER BY empSalary DESC)
FROM dbo.tblEmpDetails
)
SELECT *
FROM CTE
WHERE RN = nth value
2. What is CURSOR in sql server.
DECLARE @QUESTIONID AS INTEGER
DECLARE @QUESTIONSCUR CURSOR
SET @QUESTIONSCUR= CURSOR FAST_FORWARD FOR
SELECT QUESTIONID FROM TBLQUESTIONS
OPEN @QUESTIONSCUR
FETCH NEXT FROM @QUESTIONSCUR INTO @QUESTIONID
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE TBLQUESTIONS SET RANK=90 WHERE QUESTIONID=@QUESTIONID
FETCH NEXT FROM @QUESTIONSCUR INTO @QUESTIONID
END
CLOSE @QUESTIONSCUR
DEALLOCATE @QUESTIONSCUR
DECLARE @QUESTIONSCUR CURSOR
SET @QUESTIONSCUR= CURSOR FAST_FORWARD FOR
SELECT QUESTIONID FROM TBLQUESTIONS
OPEN @QUESTIONSCUR
FETCH NEXT FROM @QUESTIONSCUR INTO @QUESTIONID
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE TBLQUESTIONS SET RANK=90 WHERE QUESTIONID=@QUESTIONID
FETCH NEXT FROM @QUESTIONSCUR INTO @QUESTIONID
END
CLOSE @QUESTIONSCUR
DEALLOCATE @QUESTIONSCUR
Read second highest frome ach group:
WITH EXT as
(
SELECT ID,NAME,SALARY,RK=DENSE_RANK() OVER (partition by name ORDER BY salary DESC) FROMtblempsal
)
select * from EXT where RK=nth highest
Delete duplicate record:
WITH EXT as
(
SELECT ID,NAME,SALARY,RK=DENSE_RANK() OVER (partition by name ORDER BY salary DESC) FROMtblempsal
)
select * from EXT where RK>=2
No comments:
Post a Comment