You are on page 1of 4

use mydb;

SELECT * FROM EMP;


SELECT * FROM DEPT;

find out the


SELECT * FROM EMP INNER JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
SELECT * FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
SELECT * FROM EMP LEFT JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
SELECT * FROM EMP RIGHT JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
SELECT * FROM EMP FULL OUTER JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
SELECT * FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO AND EMP.DEPTNO<>10;
/* FIND OUT RAJ DEPTNAME.............*/
SELECT DEPTNO FROM EMP WHERE ENAME='RAJ'
SELECT * FROM EMP JOIN DEPT ON DEPT.DEPTNO=(SELECT DEPTNO FROM EMP WHERE
ENAME='RAJ');
SELECT * FROM EMP JOIN DEPT ON DEPT.DEPTNO=(SELECT DEPTNO FROM EMP WHERE
ENAME='RAJ') AND DEPT.DEPTNO=EMP.DEPTNO AND EMP.ENAME='RAJ';

/*ROW NO. FUNCTION*/


select Job,SAL,ENAME,ROW_NUMBER() OVER(ORDER BY ENAME) AS RowNumber FROM EMP;
/*PARTITION*/
select Job,SAL,ENAME,DEPTNO,
ROW_NUMBER() OVER(ORDER BY ENAME) AS RowNumberWise,
ROW_NUMBER() OVER(PARTITION BY DEPTNO ORDER BY DEPTNO) AS DEPTNO_WISE
FROM EMP;
/*RANK FUNCTION*/
select Job,SAL,ENAME,DEPTNO,
ROW_NUMBER() OVER(ORDER BY ENAME) AS RowNumberWise,
ROW_NUMBER() OVER(PARTITION BY DEPTNO ORDER BY DEPTNO) AS DEPTNO_WISE,
RANK() OVER(ORDER BY JOB) AS JOB_NO,
DENSE_RANK() OVER(ORDER BY JOB) AS JOB_NO2
FROM EMP;

/*NTH HIGEST SALARY USING SUB QUERY*/


SELECT * FROM EMP ORDER BY SAL DESC;
SELECT TOP 1 SAL FROM
(SELECT DISTINCT TOP 4 SAL FROM EMP ORDER BY SAL DESC)
Result
ORDER BY SAL;
/*OR USING DANSE RANK*/
SELECT SAL,DENSE_RANK() OVER (ORDER BY SAL DESC) AS DANSRANK_SAL FROM EMP;
/*OR FIND OUT NTH HIGHEST SAL USING CTE(COMMON TABLE EXPRESSION)*/

SELECT * FROM EMP ORDER BY SAL DESC;


GO
WITH RESULT AS
(
SELECT SAL,DENSE_RANK() OVER (ORDER BY SAL DESC) AS DANSRANK_SAL FROM EMP
)
SELECT TOP 1 SAL FROM RESULT
WHERE RESULT.DANSRANK_SAL=3;

/*WHY WE CAN NOT USE ROW_NUMBER FUNCTION*/

SELECT * FROM EMP ORDER BY SAL DESC;


GO
WITH RESULT AS
(
SELECT SAL,ROW_NUMBER() OVER (ORDER BY SAL DESC) AS ROW_NO_SAL FROM EMP
)
SELECT TOP 1 SAL FROM RESULT
WHERE RESULT.ROW_NO_SAL=3;

select * from DEP1;


SELECT ID,VALUE=VALUE+2,VALUE=VALUE+5,VALUE=VALUE+9,VALUE=VALUE+14,VALUE=VALUE FROM
DEP1;
SELECT *,ROW_NUMBER() OVER (ORDER BY value)+VALUE+VALUE AS AFVALUE FROM DEP1

SELECT *,ROW_NUMBER()OVER(ORDER BY VALUE)+VALUE*2 AS AFVAL FROM DEP1;


/*FINF OUT NTH MAXIMUM SAL*/
SELECT TOP 1 SAL FROM(SELECT DISTINCT TOP 1 SAL FROM EMP ORDER BY SAL DESC)
RESULT ORDER BY SAL ASC

SELECT deptno
FROM emp
UNION
SELECT DEPTNO
FROM dept
ORDER BY DEPTNO;

SELECT deptno,job
FROM emp
WHERE deptno > 10
UNION
SELECT deptno, dname
FROM DEPT
WHERE deptno> 20
ORDER BY 1;

SELECT deptno AS DEPT_NO,job AS JOB_NAME


FROM emp
WHERE deptno > 10
UNION
SELECT deptno AS DEP_NO, dname AS DEPARTMENT_NAME
FROM DEPT
WHERE deptno> 20
ORDER BY 1;

/*interset example
INTERSECT

INTERSECT is opposite from MINUS as it returns us the results that are both to be
found in first and second SELECT statement.
*/

SELECT DEPTNO
FROM emp
intersect
SELECT DEPTNO
FROM dept
/*minus use in oracle example except used in sql server*/
SELECT DEPTNO
FROM DEPT
except
SELECT DEPTNO
FROM emp

SELECT EmpNo, EmpName


FROM EmployeeRecord
WHERE Salery > 1000
EXCEPT
SELECT EmpNo, EmpName
FROM EmployeeRecord
WHERE Salery > 2000
ORDER BY EmpName;

/*Now run following query in Oracle:*/

SELECT EmpNo, EmpName


FROM EmployeeRecord
WHERE Salery > 1000
MINUS
SELECT EmpNo, EmpName
FROM EmployeeRecord
WHERE Salery > 2000
ORDER BY EmpName;

CREATE TABLE EmployeeRecord


(EmpNo INT NOT NULL, EmpName VARCHAR(10),
EmpPost VARCHAR(9), ManagerID INT,
Salery INT, COMM INT, DeptNO INT);
INSERT INTO EmployeeRecord
VALUES (7369, 'SMITH', 'CLERK', 7902, 800,NULL, 20);
INSERT INTO EmployeeRecord
VALUES (7499, 'ALLEN', 'SALESMAN', 7698, 1600, 300, 30);
INSERT INTO EmployeeRecord
VALUES (7521, 'WARD', 'SALESMAN', 7698, 1250, 500, 30);
INSERT INTO EmployeeRecord
VALUES (7566, 'JONES', 'MANAGER', 7839, 2975, NULL, 20);
INSERT INTO EmployeeRecord
VALUES (7654, 'MARTIN', 'SALESMAN', 7698, 1250, 1400, 30);
INSERT INTO EmployeeRecord
VALUES (7698, 'BLAKE', 'MANAGER', 7839, 2850, NULL, 30);
INSERT INTO EmployeeRecord
VALUES (7782, 'CLARK', 'MANAGER', 7839, 2450, NULL, 10);
INSERT INTO EmployeeRecord
VALUES (7788, 'SCOTT', 'ANALYST', 7566, 3000, NULL, 20);
INSERT INTO EmployeeRecord
VALUES (7839, 'KING', 'PRESIDENT', NULL, 5000, NULL, 10);
INSERT INTO EmployeeRecord
VALUES (7844, 'TURNER', 'SALESMAN', 7698, 1500, 0, 30);
INSERT INTO EmployeeRecord
VALUES (7876, 'ADAMS', 'CLERK', 7788, 1100, NULL, 20);
INSERT INTO EmployeeRecord
VALUES (7900, 'JAMES', 'CLERK', 7698, 950, NULL, 30);
INSERT INTO EmployeeRecord
VALUES (7902, 'FORD', 'ANALYST', 7566, 3000, NULL, 20);
INSERT INTO EmployeeRecord
VALUES (7934, 'MILLER', 'CLERK', 7782, 1300, NULL, 10);

CREATE TABLE EMPLOYEE (ENP_ID INT ,ENAME VARCHAR(20),MGRID INT);


INSERT INTO EMPLOYEE VALUES(1,'MEH',2),(2,'VAS',3),(3,'RAJ',4);
SELECT * FROM EMPLOYEE;
/*FIN OUT NAME OF MANAGER USING SELF JOINE*/
SELECT E.ENAME AS "EMPLOYEE NAME",M.ENAME AS "MGR NAME" FROM EMPLOYEE E,EMPLOYEE M
WHERE E.MGRID=M.ENP_ID;

You might also like