Monday, May 18, 2015

SQL merge statement


CREATE TABLE merge_employee
(
   id        NUMBER PRIMARY KEY,
   name      VARCHAR2 (200),
   address   VARCHAR2 (300)
);

CREATE TABLE merge_hrecord
(
   id_hr     NUMBER PRIMARY KEY,
   name      VARCHAR2 (200),
   address   VARCHAR2 (300)
);

INSERT INTO merge_employee
     VALUES (1, 'suneesh', 'XXX,Orchid Park');

INSERT INTO merge_hrecord
     VALUES (1, 'suneesh', '602,Orchid Park');

INSERT INTO merge_hrecord
     VALUES (2, 'suneesh1', '6021,Orchid Park');

COMMIT;

SELECT * FROM merge_hrecord;

SELECT *
  FROM MERGE_EMPLOYEE m;

MERGE INTO merge_employee e
     USING merge_hrecord h
        ON (e.id = h.id_hr)
WHEN MATCHED
THEN
   UPDATE SET e.address = h.address
WHEN NOT MATCHED
THEN
   INSERT     (id, address)
       VALUES (h.id_hr, h.address);

Friday, May 15, 2015

Find the 7th highest salary

Find the 7th highest salary 
sol :1 
SELECT *
FROM
  (SELECT employee_id,
    salary,
    dense_rank() over (order by salary DESC) highest_sal
  FROM EMPLOYEES
  )
WHERE highest_sal=7;

sol :2
SELECT rn ,
  salary
FROM
  (SELECT rownum rn,
    salary
  FROM
    (SELECT DISTINCT salary FROM EMPLOYEES ORDER BY salary DESC
    )
  )
WHERE rn=7;