FINDING NTH MAX
```````````````````
select sal,ename
from emp e1
where(select count(distinct e2.sal)
from emp e2
where e1.sal<e2.sal)in N-1;
FINDING NTH MIN
```````````````````
SELECT SAL,ENAME
FROM EMP E1
WHERE(SELECT COUNT(DISTINCT E2.SAL)
FROM EMP E2
WHERE E1.SAL>E2.SAL)IN N-1;
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES ('S001', 15000.00, TO_DATE('2023-06-15', 'YYYY-MM-DD'));
STUDENT TABLE
````````````
CREATE TABLE STUDENTS
2 (
3 STUDENT_ID VARCHAR(10) PRIMARY KEY,
4 FIRST_NAME VARCHAR(20) NOT NULL,
5 LAST_NAME VARCHAR(15) NOT NULL,
6 GPA NUMBER(10) NOT NULL,
7 ENROLLMENT_DATE DATE NOT NULL,
8 MAJOR VARCHAR(20) NOT NULL
9 );
INSERTING VALUES
`````````````````````````
INSERT INTO STUDENTS (STUDENT_ID, FIRST_NAME, LAST_NAME, GPA, ENROLLMENT_DATE,
MAJOR)
VALUES ('S003', 'Ravi', 'Teja', 3.95, TO_DATE('2020-07-20', 'YYYY-MM-DD'),
'Electronics');
INSERT INTO STUDENTS (STUDENT_ID, FIRST_NAME, LAST_NAME, GPA, ENROLLMENT_DATE,
MAJOR)
VALUES ('S004', 'Sneha', 'Das', 3.40, TO_DATE('2023-01-10', 'YYYY-MM-DD'),
'Civil');
INSERT INTO STUDENTS (STUDENT_ID, FIRST_NAME, LAST_NAME, GPA, ENROLLMENT_DATE,
MAJOR)
VALUES ('S005', 'Vikram', 'Patel', 4.00, TO_DATE('2021-09-05', 'YYYY-MM-DD'),
'Information Tech');
INSERT INTO STUDENTS (STUDENT_ID, FIRST_NAME, LAST_NAME, GPA, ENROLLMENT_DATE,
MAJOR)
VALUES ('S006', 'Anjali', 'Sharma', 3.75, TO_DATE('2022-11-25', 'YYYY-MM-DD'),
'Biotechnology');
PROGRAM TABLE
`````````````````````````
CREATE TABLE PROGRAM (
2 STUDENT_REF_ID VARCHAR2(10),
3 PROGRAM_NAME VARCHAR2(100) NOT NULL,
4 PROGRAM_START_DATE DATE NOT NULL,
5 FOREIGN KEY (STUDENT_REF_ID) REFERENCES STUDENTS(STUDENT_ID)
6 );
INSERTING VALUES
````````````````````````````````````````````
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES
('S003', 18000.00, TO_DATE('2023-03-20', 'YYYY-MM-DD'));
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES
('S004', 10000.00, TO_DATE('2023-12-05', 'YYYY-MM-DD'));
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES
('S005', 20000.00, TO_DATE('2024-01-10', 'YYYY-MM-DD'));
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES
('S006', 14000.00, TO_DATE('2022-11-22', 'YYYY-MM-DD'));
SCHOLARSHIP TABLE
`````````````````````````````````````````````````
CREATE TABLE SCHOLARSHIP (
2 STUDENT_REF_ID VARCHAR2(10),
3 SCHOLARSHIP_AMOUNT NUMBER(10, 2) NOT NULL,
4 SCHOLARSHIP_DATE DATE NOT NULL,
5 CONSTRAINT FK_SCHOLARSHIP_STUDENT FOREIGN KEY (STUDENT_REF_ID) REFERENCES
STUDENTS(STUDENT_ID)
6 );
INSERTING VALUES
````````````````````````````````
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES ('S003', 18000.00, TO_DATE('2023-03-20', 'YYYY-MM-DD'));
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES ('S004', 10000.00, TO_DATE('2023-12-05', 'YYYY-MM-DD'));
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES ('S005', 20000.00, TO_DATE('2024-01-10', 'YYYY-MM-DD'));
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES ('S006', 14000.00, TO_DATE('2022-11-22', 'YYYY-MM-DD'));
1. SELECT UPPER(FIRST_NAME) AS STUDENT_NAME
FROM STUDENTS;
2. SELECT DISTINCT MAJOR
FROM STUDENTS;
3.SELECT SUBSTR(FIRST_NAME,1,3) AS SUB_NAME
FROM STUDENTS;
4.
SELECT FIRST_NAME, INSTR(FIRST_NAME, 'A') AS POSITION_OF_A
FROM STUDENTS;
5.SELECT DISTINCT LENGTH(MAJOR)
FROM STUDENTS;
6.SELECT FIRST_NAME, REPLACE(FIRST_NAME, 'a', 'A') AS MODIFIED_NAME
FROM STUDENTS;
7. SELECT FIRST_NAME, LAST_NAME, FIRST_NAME || LAST_NAME AS FULL_NAME
FROM STUDENTS;
8.SELECT * FROM Students
ORDER BY FIRST_NAME ASC, MAJOR DESC;
9.SELECT * FROM Students
WHERE FIRST_NAME IN ('Prem', 'Shivansh');
10.SELECT * FROM Students
WHERE FIRST_NAME NOT IN ('Prem', 'Shivansh');
11.SELECT * FROM Students
WHERE FIRST_NAME LIKE '%a';
12.SELECT * FROM Students
WHERE FIRST_NAME LIKE '%a' AND LENGTH(FIRST_NAME) = 6;
13.SELECT * FROM Students
WHERE GPA BETWEEN 9.00 AND 9.99;
14.SELECT COUNT(*) AS Total_Students
FROM Students
WHERE MAJOR = 'Computer Science';
15.SELECT CONCAT(FIRST_NAME, ' ', LAST_NAME) AS FULL_NAME
FROM Students
WHERE GPA BETWEEN 8.5 AND 9.5;
16.SELECT MAJOR, COUNT(*) AS Student_Count
FROM Students
GROUP BY MAJOR
ORDER BY Student_Count DESC;
17.SELECT S.FIRST_NAME, S.LAST_NAME, SCH.AMOUNT, SCH.SCHOLARSHIP_DATE
FROM Students S
JOIN Scholarship SCH ON S.Student_ID = SCH.Student_ID;
18.SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY Student_ID) AS RowNum
FROM Students
) AS Temp
WHERE MOD(RowNum, 2) = 1;
19.SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY Student_ID) AS RowNum
FROM Students
) AS Temp
WHERE MOD(RowNum, 2) = 0;
20.SELECT S.FIRST_NAME, S.LAST_NAME, SCH.AMOUNT, SCH.SCHOLARSHIP_DATE
FROM Students S
LEFT JOIN Scholarship SCH ON S.Student_ID = SCH.Student_ID;
21.SELECT * FROM Student
ORDER BY GPA DESC
LIMIT 5;
22.SELECT DISTINCT GPA
FROM Students
ORDER BY GPA DESC
LIMIT 1 OFFSET 4;
23.SELECT GPA
FROM (
SELECT DISTINCT GPA
FROM Students
ORDER BY GPA DESC
)
OFFSET 4 ROWS FETCH NEXT 1 ROWS ONLY;
24.SELECT *
FROM Students
WHERE GPA IN (
SELECT GPA
FROM Students
GROUP BY GPA
HAVING COUNT(*) > 1
);
25.SELECT MAX(GPA) AS Second_Highest_GPA
FROM Students
WHERE GPA < (SELECT MAX(GPA) FROM Students);
26.SELECT * FROM (
SELECT * FROM Students ORDER BY Student_ID LIMIT 1
) AS first_row
UNION ALL
SELECT * FROM (
SELECT * FROM Students ORDER BY Student_ID LIMIT 1
) AS first_row_duplicate;
27.SELECT Student_ID FROM Students
WHERE Student_ID NOT IN (SELECT Student_ID FROM Scholarship);
28.SELECT * FROM Students
LIMIT (SELECT COUNT(*) / 2 FROM Students);
29.SELECT MAJOR FROM Students
GROUP BY MAJOR
HAVING COUNT(*) < 4;
30.SELECT MAJOR, COUNT(*) AS Student_Count
FROM Students
GROUP BY MAJOR;
31.SELECT * FROM Students
ORDER BY Student_ID DESC
LIMIT 1;
32.SELECT * FROM Students
ORDER BY Student_ID ASC
LIMIT 1;
33.SELECT * FROM Students
ORDER BY Student_ID DESC
LIMIT 5;
34.SELECT DISTINCT s1.gpa
FROM Students s1
WHERE (
SELECT COUNT(DISTINCT s2.gpa)
FROM Students s2
WHERE s2.gpa > s1.gpa
) < 3
ORDER BY s1.gpa DESC;
35.SELECT DISTINCT s1.gpa
FROM Students s1
WHERE (
SELECT COUNT(DISTINCT s2.gpa)
FROM Students s2
WHERE s2.gpa > s1.gpa
) < 3
ORDER BY s1.gpa DESC;
ORDER BY s1.gpa DESC;
36.SELECT MAX(GPA) AS Max_GPA
FROM Students;
37.SELECT MAJOR, MAX(GPA) AS Max_GPA
FROM Students
GROUP BY MAJOR;
38.SELECT FIRST_NAME, LAST_NAME
FROM Students
WHERE GPA = (SELECT MAX(GPA) FROM Students);
39.SELECT SYSDATE FROM DUAL;
40.CREATE TABLE NewStudent AS
SELECT * FROM Students;
41.UPDATE Students
SET gpa = 7.5
WHERE major = 'Computer Science';
42.SELECT major, AVG(gpa) AS average_gpa
FROM Students
GROUP BY major;
43.SELECT name, gpa
FROM Students
ORDER BY gpa DESC
LIMIT 3;
44.SELECT major, COUNT(*) AS student_count
FROM Students
WHERE gpa > 7.5
GROUP BY major;
45.SELECT name
FROM Students
WHERE gpa = (
SELECT gpa
FROM Students
WHERE name = 'Shivansh Mahajan'
);
FINDING N'TH MAX AND N'TH MIN USING CO-RELATED SUB QUERY
```````````````````````````````````````````````````````````````````
FINDING NTH MAX
```````````````````
select sal,ename
from emp e1
where(select count(distinct e2.sal)
from emp e2
where e1.sal<e2.sal)in N-1;
FINDING NTH MIN
```````````````````
SELECT SAL,ENAME
FROM EMP E1
WHERE(SELECT COUNT(DISTINCT E2.SAL)
FROM EMP E2
WHERE E1.SAL>E2.SAL)IN N-1;
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES ('S001', 15000.00, TO_DATE('2023-06-15', 'YYYY-MM-DD'));
STUDENT TABLE
````````````
CREATE TABLE STUDENTS
2 (
3 STUDENT_ID VARCHAR(10) PRIMARY KEY,
4 FIRST_NAME VARCHAR(20) NOT NULL,
5 LAST_NAME VARCHAR(15) NOT NULL,
6 GPA NUMBER(10) NOT NULL,
7 ENROLLMENT_DATE DATE NOT NULL,
8 MAJOR VARCHAR(20) NOT NULL
9 );
INSERTING VALUES
`````````````````````````
INSERT INTO STUDENTS (STUDENT_ID, FIRST_NAME, LAST_NAME, GPA, ENROLLMENT_DATE,
MAJOR)
VALUES ('S003', 'Ravi', 'Teja', 3.95, TO_DATE('2020-07-20', 'YYYY-MM-DD'),
'Electronics');
INSERT INTO STUDENTS (STUDENT_ID, FIRST_NAME, LAST_NAME, GPA, ENROLLMENT_DATE,
MAJOR)
VALUES ('S004', 'Sneha', 'Das', 3.40, TO_DATE('2023-01-10', 'YYYY-MM-DD'),
'Civil');
INSERT INTO STUDENTS (STUDENT_ID, FIRST_NAME, LAST_NAME, GPA, ENROLLMENT_DATE,
MAJOR)
VALUES ('S005', 'Vikram', 'Patel', 4.00, TO_DATE('2021-09-05', 'YYYY-MM-DD'),
'Information Tech');
INSERT INTO STUDENTS (STUDENT_ID, FIRST_NAME, LAST_NAME, GPA, ENROLLMENT_DATE,
MAJOR)
VALUES ('S006', 'Anjali', 'Sharma', 3.75, TO_DATE('2022-11-25', 'YYYY-MM-DD'),
'Biotechnology');
PROGRAM TABLE
`````````````````````````
CREATE TABLE PROGRAM (
2 STUDENT_REF_ID VARCHAR2(10),
3 PROGRAM_NAME VARCHAR2(100) NOT NULL,
4 PROGRAM_START_DATE DATE NOT NULL,
5 FOREIGN KEY (STUDENT_REF_ID) REFERENCES STUDENTS(STUDENT_ID)
6 );
INSERTING VALUES
````````````````````````````````````````````
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES
('S003', 18000.00, TO_DATE('2023-03-20', 'YYYY-MM-DD'));
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES
('S004', 10000.00, TO_DATE('2023-12-05', 'YYYY-MM-DD'));
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES
('S005', 20000.00, TO_DATE('2024-01-10', 'YYYY-MM-DD'));
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES
('S006', 14000.00, TO_DATE('2022-11-22', 'YYYY-MM-DD'));
SCHOLARSHIP TABLE
`````````````````````````````````````````````````
CREATE TABLE SCHOLARSHIP (
2 STUDENT_REF_ID VARCHAR2(10),
3 SCHOLARSHIP_AMOUNT NUMBER(10, 2) NOT NULL,
4 SCHOLARSHIP_DATE DATE NOT NULL,
5 CONSTRAINT FK_SCHOLARSHIP_STUDENT FOREIGN KEY (STUDENT_REF_ID) REFERENCES
STUDENTS(STUDENT_ID)
6 );
INSERTING VALUES
````````````````````````````````
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES ('S003', 18000.00, TO_DATE('2023-03-20', 'YYYY-MM-DD'));
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES ('S004', 10000.00, TO_DATE('2023-12-05', 'YYYY-MM-DD'));
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES ('S005', 20000.00, TO_DATE('2024-01-10', 'YYYY-MM-DD'));
INSERT INTO SCHOLARSHIP (STUDENT_REF_ID, SCHOLARSHIP_AMOUNT, SCHOLARSHIP_DATE)
VALUES ('S006', 14000.00, TO_DATE('2022-11-22', 'YYYY-MM-DD'));
1. SELECT UPPER(FIRST_NAME) AS STUDENT_NAME
FROM STUDENTS;
2. SELECT DISTINCT MAJOR
FROM STUDENTS;
3.SELECT SUBSTR(FIRST_NAME,1,3) AS SUB_NAME
FROM STUDENTS;
4.
SELECT FIRST_NAME, INSTR(FIRST_NAME, 'A') AS POSITION_OF_A
FROM STUDENTS;
5.SELECT DISTINCT LENGTH(MAJOR)
FROM STUDENTS;
6.SELECT FIRST_NAME, REPLACE(FIRST_NAME, 'a', 'A') AS MODIFIED_NAME
FROM STUDENTS;
7. SELECT FIRST_NAME, LAST_NAME, FIRST_NAME || LAST_NAME AS FULL_NAME
FROM STUDENTS;
8.SELECT * FROM Students
ORDER BY FIRST_NAME ASC, MAJOR DESC;
9.SELECT * FROM Students
WHERE FIRST_NAME IN ('Prem', 'Shivansh');
10.SELECT * FROM Students
WHERE FIRST_NAME NOT IN ('Prem', 'Shivansh');
11.SELECT * FROM Students
WHERE FIRST_NAME LIKE '%a';
12.SELECT * FROM Students
WHERE FIRST_NAME LIKE '%a' AND LENGTH(FIRST_NAME) = 6;
13.SELECT * FROM Students
WHERE GPA BETWEEN 9.00 AND 9.99;
14.SELECT COUNT(*) AS Total_Students
FROM Students
WHERE MAJOR = 'Computer Science';
15.SELECT CONCAT(FIRST_NAME, ' ', LAST_NAME) AS FULL_NAME
FROM Students
WHERE GPA BETWEEN 8.5 AND 9.5;
16.SELECT MAJOR, COUNT(*) AS Student_Count
FROM Students
GROUP BY MAJOR
ORDER BY Student_Count DESC;
17.SELECT S.FIRST_NAME, S.LAST_NAME, SCH.AMOUNT, SCH.SCHOLARSHIP_DATE
FROM Students S
JOIN Scholarship SCH ON S.Student_ID = SCH.Student_ID;
18.SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY Student_ID) AS RowNum
FROM Students
) AS Temp
WHERE MOD(RowNum, 2) = 1;
19.SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY Student_ID) AS RowNum
FROM Students
) AS Temp
WHERE MOD(RowNum, 2) = 0;
20.SELECT S.FIRST_NAME, S.LAST_NAME, SCH.AMOUNT, SCH.SCHOLARSHIP_DATE
FROM Students S
LEFT JOIN Scholarship SCH ON S.Student_ID = SCH.Student_ID;
21.SELECT * FROM Student
ORDER BY GPA DESC
LIMIT 5;
22.SELECT DISTINCT GPA
FROM Students
ORDER BY GPA DESC
LIMIT 1 OFFSET 4;
23.SELECT GPA
FROM (
SELECT DISTINCT GPA
FROM Students
ORDER BY GPA DESC
)
OFFSET 4 ROWS FETCH NEXT 1 ROWS ONLY;
24.SELECT *
FROM Students
WHERE GPA IN (
SELECT GPA
FROM Students
GROUP BY GPA
HAVING COUNT(*) > 1
);
25.SELECT MAX(GPA) AS Second_Highest_GPA
FROM Students
WHERE GPA < (SELECT MAX(GPA) FROM Students);
26.SELECT * FROM (
SELECT * FROM Students ORDER BY Student_ID LIMIT 1
) AS first_row
UNION ALL
SELECT * FROM (
SELECT * FROM Students ORDER BY Student_ID LIMIT 1
) AS first_row_duplicate;
27.SELECT Student_ID FROM Students
WHERE Student_ID NOT IN (SELECT Student_ID FROM Scholarship);
28.SELECT * FROM Students
LIMIT (SELECT COUNT(*) / 2 FROM Students);
29.SELECT MAJOR FROM Students
GROUP BY MAJOR
HAVING COUNT(*) < 4;
30.SELECT MAJOR, COUNT(*) AS Student_Count
FROM Students
GROUP BY MAJOR;
31.SELECT * FROM Students
ORDER BY Student_ID DESC
LIMIT 1;
32.SELECT * FROM Students
ORDER BY Student_ID ASC
LIMIT 1;
33.SELECT * FROM Students
ORDER BY Student_ID DESC
LIMIT 5;
34.SELECT DISTINCT s1.gpa
FROM Students s1
WHERE (
SELECT COUNT(DISTINCT s2.gpa)
FROM Students s2
WHERE s2.gpa > s1.gpa
) < 3
ORDER BY s1.gpa DESC;
35.SELECT DISTINCT s1.gpa
FROM Students s1
WHERE (
SELECT COUNT(DISTINCT s2.gpa)
FROM Students s2
WHERE s2.gpa > s1.gpa
) < 3
ORDER BY s1.gpa DESC;
ORDER BY s1.gpa DESC;
36.SELECT MAX(GPA) AS Max_GPA
FROM Students;
37.SELECT MAJOR, MAX(GPA) AS Max_GPA
FROM Students
GROUP BY MAJOR;
38.SELECT FIRST_NAME, LAST_NAME
FROM Students
WHERE GPA = (SELECT MAX(GPA) FROM Students);
39.SELECT SYSDATE FROM DUAL;
40.CREATE TABLE NewStudent AS
SELECT * FROM Students;
41.UPDATE Students
SET gpa = 7.5
WHERE major = 'Computer Science';
42.SELECT major, AVG(gpa) AS average_gpa
FROM Students
GROUP BY major;
43.SELECT name, gpa
FROM Students
ORDER BY gpa DESC
LIMIT 3;
44.SELECT major, COUNT(*) AS student_count
FROM Students
WHERE gpa > 7.5
GROUP BY major;
45.SELECT name
FROM Students
WHERE gpa = (
SELECT gpa
FROM Students
WHERE name = 'Shivansh Mahajan'
);
45 questionsss
```````````````````````````````````````````````````````````````````````````````````
``````
---
1. Display all the employees whose department name ends with 'S':
SELECT E.*
FROM EMP E
WHERE E.DEPTNO IN (
SELECT D.DEPTNO
FROM DEPT D
WHERE D.DNAME LIKE '%S'
);
---
2. Employee with maximum salary in 'ACCOUNTING' dept:
SELECT ENAME
FROM EMP
WHERE SAL = (
SELECT MAX(SAL)
FROM EMP
WHERE DEPTNO = (
SELECT DEPTNO FROM DEPT WHERE DNAME = 'ACCOUNTING'
)
);
---
3. Department name with highest commission:
SELECT D.DNAME
FROM DEPT D
WHERE D.DEPTNO = (
SELECT DEPTNO
FROM EMP
WHERE COMM IS NOT NULL
ORDER BY COMM DESC
FETCH FIRST 1 ROWS ONLY
);
---
4. Employee names whose department name has 2nd character 'O':
SELECT ENAME
FROM EMP
WHERE DEPTNO IN (
SELECT DEPTNO
FROM DEPT
WHERE SUBSTR(DNAME, 2, 1) = 'O'
);
---
5. Employees whose dept number is same as SCOTT:
SELECT *
FROM EMP
WHERE DEPTNO = (
SELECT DEPTNO FROM EMP WHERE ENAME = 'SCOTT'
);
---
6. Employees in ‘OPERATIONS’ and ‘ACCOUNTING’ dept:
SELECT *
FROM EMP
WHERE DEPTNO IN (
SELECT DEPTNO FROM DEPT WHERE DNAME IN ('OPERATIONS', 'ACCOUNTING')
);
---
7. Employees with salary greater than MILLER:
SELECT *
FROM EMP
WHERE SAL > (
SELECT SAL FROM EMP WHERE ENAME = 'MILLER'
);
---
8. Departments having at least 3 salesmen:
SELECT DEPTNO
FROM EMP
WHERE JOB = 'SALESMAN'
GROUP BY DEPTNO
HAVING COUNT(*) >= 3;
---
9. Employees with no reporting manager:
SELECT *
FROM EMP
WHERE MGR IS NULL;
---
10. Employees reporting to JONES:
SELECT *
FROM EMP
WHERE MGR = (
SELECT EMPNO FROM EMP WHERE ENAME = 'JONES'
);
---
11. Employees from RESEARCH or ACCOUNTING with at least 2 reporting:
SELECT *
FROM EMP
WHERE DEPTNO IN (
SELECT DEPTNO FROM DEPT WHERE DNAME IN ('RESEARCH', 'ACCOUNTING')
)
AND EMPNO IN (
SELECT MGR FROM EMP GROUP BY MGR HAVING COUNT(*) >= 2
);
---
12. Employees whose name does not start with 'S' and salary between 1500 and 3000:
SELECT *
FROM EMP
WHERE ENAME NOT LIKE 'S%' AND SAL BETWEEN 1500 AND 3000;
---
13. Employees with minimum salary but greater than 2000:
SELECT *
FROM EMP
WHERE SAL = (
SELECT MIN(SAL) FROM EMP WHERE SAL > 2000
);
---
14. Location of employees in Accounting department:
SELECT DISTINCT D.LOC
FROM DEPT D
WHERE D.DNAME = 'ACCOUNTING';
---
15. Departments' location with more than 4 employees:
SELECT D.LOC
FROM DEPT D
WHERE D.DEPTNO IN (
SELECT DEPTNO
FROM EMP
GROUP BY DEPTNO
HAVING COUNT(*) > 4
);
---
16. Employees whose job ≠ 'ALLEN' and salary > 'MARTIN':
SELECT *
FROM EMP
WHERE JOB <> (
SELECT JOB FROM EMP WHERE ENAME = 'ALLEN'
)
AND SAL > (
SELECT SAL FROM EMP WHERE ENAME = 'MARTIN'
);
---
---
17. Employees with same location as Adam's manager:
SELECT E.*
FROM EMP E
WHERE E.DEPTNO IN (
SELECT D.DEPTNO
FROM DEPT D
WHERE D.LOC = (
SELECT D.LOC
FROM EMP A
JOIN EMP M ON A.MGR = M.EMPNO
JOIN DEPT D ON M.DEPTNO = D.DEPTNO
WHERE A.ENAME = 'ADAM'
)
);
---
18. Job, manager, and count of employees working for Jones:
SELECT JOB, MGR, COUNT(*) AS NUM_EMPLOYEES
FROM EMP
WHERE MGR = (
SELECT EMPNO FROM EMP WHERE ENAME = 'JONES'
)
GROUP BY JOB, MGR;
---
19. Name, hire date, and commission of Ford’s manager:
SELECT ENAME, HIREDATE, COMM
FROM EMP
WHERE EMPNO = (
SELECT MGR FROM EMP WHERE ENAME = 'FORD'
);
---
20. Number of employees with salary less than Blake’s manager:
SELECT COUNT(*)
FROM EMP
WHERE SAL < (
SELECT SAL
FROM EMP
WHERE EMPNO = (
SELECT MGR FROM EMP WHERE ENAME = 'BLAKE'
)
);
---
21. Employees located in Chicago and commission is zero:
SELECT E.*
FROM EMP E
JOIN DEPT D ON E.DEPTNO = D.DEPTNO
WHERE D.LOC = 'CHICAGO' AND NVL(COMM, 0) = 0;
---
22. Sales employees with salary > department average:
SELECT *
FROM EMP E
WHERE JOB = 'SALESMAN'
AND SAL > (
SELECT AVG(SAL)
FROM EMP
WHERE DEPTNO = E.DEPTNO
);
---
23. Employees in Research department and are managers:
SELECT *
FROM EMP
WHERE JOB = 'MANAGER'
AND DEPTNO = (
SELECT DEPTNO FROM DEPT WHERE DNAME = 'RESEARCH'
);
---
24. Department name of employees earning commission:
SELECT DISTINCT D.DNAME
FROM EMP E
JOIN DEPT D ON E.DEPTNO = D.DEPTNO
WHERE COMM IS NOT NULL AND COMM > 0;
---
25. Department name of employee with highest salary and no manager:
SELECT D.DNAME
FROM EMP E
JOIN DEPT D ON E.DEPTNO = D.DEPTNO
WHERE MGR IS NULL AND SAL = (
SELECT MAX(SAL) FROM EMP WHERE MGR IS NULL
);
---
26. Employees reporting to Blake and have commission (without using NULL/IS NOT
NULL):
SELECT *
FROM EMP
WHERE MGR = (
SELECT EMPNO FROM EMP WHERE ENAME = 'BLAKE'
)
AND NVL(COMM, 0) > 0;
---
27. Dept name and location of all the salesman-manager-managers:
SELECT DISTINCT D.DNAME, D.LOC
FROM DEPT D
JOIN EMP E1 ON D.DEPTNO = E1.DEPTNO
WHERE E1.EMPNO IN (
SELECT MGR FROM EMP WHERE EMPNO IN (
SELECT MGR FROM EMP WHERE JOB = 'SALESMAN'
)
);
---
---
28. Clerks reporting to Blake and earning less than Martin:
SELECT E.ENAME, D.DNAME, D.LOC
FROM EMP E
JOIN DEPT D ON E.DEPTNO = D.DEPTNO
WHERE E.JOB = 'CLERK'
AND E.MGR = (SELECT EMPNO FROM EMP WHERE ENAME = 'BLAKE')
AND E.SAL < (SELECT SAL FROM EMP WHERE ENAME = 'MARTIN');
---
29. Employees not reporting to President, with commission, and salary > max salary
of clerks (no NULL usage):
SELECT *
FROM EMP
WHERE MGR != (SELECT EMPNO FROM EMP WHERE JOB = 'PRESIDENT')
AND COMM > 0
AND SAL > (
SELECT MAX(SAL) FROM EMP WHERE JOB = 'CLERK'
);
---
30. Employees who joined 2+ years after the first employee and earn more than
Blake:
SELECT *
FROM EMP
WHERE HIREDATE > (
SELECT MIN(HIREDATE) + INTERVAL '2' YEAR FROM EMP
)
AND SAL > (SELECT SAL FROM EMP WHERE ENAME = 'BLAKE');
---
31. Location of employees reporting to Blake:
SELECT DISTINCT D.LOC
FROM EMP E
JOIN DEPT D ON E.DEPTNO = D.DEPTNO
WHERE E.MGR = (SELECT EMPNO FROM EMP WHERE ENAME = 'BLAKE');
---
32. Employees with same job as Jones and salary less than Scott:
SELECT *
FROM EMP
WHERE JOB = (SELECT JOB FROM EMP WHERE ENAME = 'JONES')
AND SAL < (SELECT SAL FROM EMP WHERE ENAME = 'SCOTT');
---
33. Employees in dept 30, annual salary > X, and at least 3 employees:
SELECT *
FROM EMP
WHERE DEPTNO = 30
AND (SAL * 12) > 0
AND DEPTNO IN (
SELECT DEPTNO
FROM EMP
GROUP BY DEPTNO
HAVING COUNT(*) >= 3
);
---
34. Employees earning less than any salesman:
SELECT *
FROM EMP
WHERE SAL < ANY (SELECT SAL FROM EMP WHERE JOB = 'SALESMAN');
---
35. Employees who joined before the last person:
SELECT *
FROM EMP
WHERE HIREDATE < (SELECT MAX(HIREDATE) FROM EMP);
---
36. Employees earning more than any manager:
SELECT *
FROM EMP
WHERE SAL > ALL (SELECT SAL FROM EMP WHERE JOB = 'MANAGER');
---
37. Employees joined 4+ years after 1st employee and earn less than Blake:
SELECT *
FROM EMP
WHERE HIREDATE > (
SELECT MIN(HIREDATE) + INTERVAL '4' YEAR FROM EMP
)
AND SAL < (SELECT SAL FROM EMP WHERE ENAME = 'BLAKE');
---
38. Department info for employees in New York:
SELECT DISTINCT D.*
FROM EMP E
JOIN DEPT D ON E.DEPTNO = D.DEPTNO
WHERE D.LOC = 'NEW YORK';
---
39. Location of employees not starting with A and salary between 1000–3000:
SELECT DISTINCT D.LOC
FROM EMP E
JOIN DEPT D ON E.DEPTNO = D.DEPTNO
WHERE ENAME NOT LIKE 'A%'
AND SAL BETWEEN 1000 AND 3000;
---
40. Department name of employees reporting to Blake:
SELECT DISTINCT D.DNAME
FROM EMP E
JOIN DEPT D ON E.DEPTNO = D.DEPTNO
WHERE E.MGR = (SELECT EMPNO FROM EMP WHERE ENAME = 'BLAKE');
---
41. Martin's manager's manager's department name and location:
SELECT D.DNAME, D.LOC
FROM EMP E
JOIN DEPT D ON E.DEPTNO = D.DEPTNO
WHERE E.EMPNO = (
SELECT MGR FROM EMP WHERE EMPNO = (
SELECT MGR FROM EMP WHERE ENAME = 'MARTIN'
)
);
---
42. Manager number, job, dept number for those with no commission in Chicago or
Dallas:
SELECT MGR, JOB, DEPTNO
FROM EMP
WHERE NVL(COMM, 0) = 0
AND DEPTNO IN (
SELECT DEPTNO FROM DEPT WHERE LOC IN ('CHICAGO', 'DALLAS')
);
---
43. SELECT E.*, E.AnnualSalary
FROM Employees E
WHERE E.Commission = (SELECT MAX(Commission) FROM Employees);
44. SELECT E.*
FROM Employees E
WHERE E.DepartmentID = (SELECT DepartmentID FROM Departments WHERE DepartmentName =
'Sales')
AND E.Commission > 0
AND E.HireDate < (SELECT MAX(HireDate) FROM Employees);
45. SELECT D.DepartmentName
FROM Departments D
JOIN Managers M ON D.ManagerID = M.ManagerID
WHERE M.ManagerName = (SELECT ManagerName FROM Managers WHERE ManagerID = (SELECT
ManagerID FROM Employees WHERE Name = 'Ward'));
46.
SELECT DISTINCT D.DepartmentName
FROM Employees E
JOIN Departments D ON E.DepartmentID = D.DepartmentID
WHERE E.AnnualSalary > (SELECT AVG(AnnualSalary) FROM Employees WHERE JobID =
(SELECT JobID FROM Jobs WHERE JobTitle = 'Clerk'));
47.
SELECT E.*, E.AnnualSalary * 1.25 AS NewSalary
FROM Employees E
WHERE E.HireDate = (SELECT MAX(HireDate) FROM Employees);
48.
SELECT E.DepartmentID
FROM Employees E
JOIN Departments D ON E.DepartmentID = D.DepartmentID
WHERE D.DepartmentName = 'Sales' AND E.ManagerID = E.EmployeeID