0% found this document useful (0 votes)
5 views19 pages

Finding NTH Max

The document contains SQL queries for finding the Nth maximum and minimum salaries from an employee table, as well as creating and inserting data into student and scholarship tables. It includes various SELECT statements to manipulate and retrieve student data based on GPA, major, and other criteria. Additionally, it outlines the structure of the student and scholarship tables, including foreign key relationships.

Uploaded by

vennelajalapati5
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views19 pages

Finding NTH Max

The document contains SQL queries for finding the Nth maximum and minimum salaries from an employee table, as well as creating and inserting data into student and scholarship tables. It includes various SELECT statements to manipulate and retrieve student data based on GPA, major, and other criteria. Additionally, it outlines the structure of the student and scholarship tables, including foreign key relationships.

Uploaded by

vennelajalapati5
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 19

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

You might also like