/*Tested on SQL server 2005*/
/*Set up the test table*/
CREATE TABLE PS_TEST_RECORD (PERSON_ID NVARCHAR(15) NOT NULL,
AGE SMALLINT NOT NULL);
INSERT INTO PS_TEST_RECORD VALUES ('1',12);
INSERT INTO PS_TEST_RECORD VALUES ('2',19);
INSERT INTO PS_TEST_RECORD VALUES ('3',35);
INSERT INTO PS_TEST_RECORD VALUES ('4',20);
INSERT INTO PS_TEST_RECORD VALUES ('5',88);
INSERT INTO PS_TEST_RECORD VALUES ('6',52);
INSERT INTO PS_TEST_RECORD VALUES ('7',52);
/*Query 1*/
select * from (select PERSON_ID,AGE, dense_rank() over (order by AGE desc) rank from PS_TEST_RECORD) a where a.rank=2
/*Query 2*/
SELECT * FROM PS_TEST_RECORD T1
WHERE (RANK-1)=(SELECT count(DISTINCT(T2.AGE)) FROM PS_TEST_SQL T2 WHERE
T2.AGE>T1.AGE)
WHERE RANK = 1,2,3,4,...
No comments:
Post a Comment