SQL Practice Set 1

ganesh kavhar
3 min readMar 14, 2022

--

— To fetch ALTERNATE records from a table. (EVEN NUMBERED)
SELECT * FROM
(SELECT ROWNUM AS RN,E.* FROM EMPLOYEES E)
WHERE MOD(RN,2)=0;

— To select ALTERNATE records from a table. (ODD NUMBERED)
SELECT * FROM
(SELECT ROWNUM AS RN,E.* FROM EMPLOYEES E)
WHERE MOD(RN,2)=1;

— Find the 3rd MAX salary in the emp table.
SELECT * FROM
(SELECT DENSE_RANK() OVER(ORDER BY SALARY DESC) AS DRK,E.* FROM EMPLOYEES E)
WHERE DRK=3;

— Find the 3rd MIN salary in the emp table.
SELECT * FROM
(SELECT DENSE_RANK() OVER(ORDER BY SALARY) AS DRK,E.* FROM EMPLOYEES E)
WHERE DRK=3;

— Select FIRST n records from a table.
SELECT * FROM EMPLOYEES
WHERE ROWNUM=1;

— Select LAST n records from a table
SELECT * FROM
(SELECT ROWNUM AS RN,E.* FROM EMPLOYEES E ORDER BY EMPLOYEE_ID DESC)
WHERE RN=1;

— List dept no., Dept name for all the departments in which there are no employees in the department.
SELECT * FROM DEPARTMENTS
WHERE EMPLOYEE_ID NOT IN
(SELECT EMPLOYEE_ID FROM DEPARTMENTS);

— How to get 3 Max salaries ?
select distinct salARY from empLOYEES a
where 3 >= (select count(distinct salARY)
from empLOYEES b
where a.salARY <= b.salARY)
order by a.salARY desc;

— How to get 3 Min salaries ?
select distinct salARY from empLOYEES a
where 3 >= (select count(distinct salARY)
from empLOYEES b
where a.salARY <= b.salARY)
order by a.salARY;

— Select DISTINCT RECORDS from emp table.
SELECT DISTINCT FIRST_NAME FROM EMPLOYEES;

— How to delete duplicate rows in a table?
DELETE FROM DUPLICATEE
WHERE ROWID NOT IN
(SELECT MAX(ROWID) FROM DUPLICATEE E
GROUP BY EMPLOYEE_ID);

— Count of number of employees in department wise.
SELECT DEPARTMENT_ID,COUNT(*)
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID;

— Suppose there is annual salary information provided by emp table.
— How to fetch monthly salary of each and every employee?
SELECT FIRST_NAME,SALARY,SALARY/12 AS MONTHLYSALARY
FROM EMPLOYEES ;

— Select all record from emp table where deptno =10 or 40.
SELECT * FROM EMPLOYEES
WHERE DEPARTMENT_ID=10 OR DEPARTMENT_ID=40;

— Select all record from emp table where deptno=30 and sal>1500.
SELECT * FROM EMPLOYEES
WHERE DEPARTMENT_ID=30 AND SALARY>1500;

— Select all record from emp where job not in SALESMAN or CLERK.
SELECT * FROM EMPLOYEES
WHERE JOB_ID=’SALESMAN’ OR JOB_ID=’CLERK’;

— Select all record from emp where ename in ‘BLAKE’,’SCOTT’,’KING’and’FORD’.
SELECT * FROM EMPLOYEES
WHERE FIRST_NAME IN(‘BLAKE’,’SCOTT’,’KING’,’FORD’);

— Select all records where ename starts with ‘S’ and its lenth is 6 char.
SELECT * FROM EMPLOYEES
WHERE FIRST_NAME LIKE ‘S%’
AND LENGTH(FIRST_NAME)=6;

— Select all records where ename may be any no of character but it should end with ‘R’.
SELECT * FROM EMPLOYEES
WHERE FIRST_NAME LIKE ‘%R’;

— Count MGR and their salary in emp table.
SELECT MANAGER_ID,SUM(SALARY)
FROM EMPLOYEES
GROUP BY MANAGER_ID;

— In emp table add comm+sal as total sal .
SELECT COMMISSION_PCT+SALARY AS TOTAL_SAL
FROM EMPLOYEES;

— Select any salary ❤000 from emp table.
SELECT * FROM EMPLOYEES
WHERE SALARY > ANY
(SELECT SALARY FROM EMPLOYEES
WHERE SALARY ❤000);

— Select all salary ❤000 from emp table.
SELECT * FROM EMPLOYEES
WHERE SALARY > ALL
(SELECT SALARY FROM EMPLOYEES
WHERE SALARY ❤000);

— Select all the employee group by deptno and sal in descending order.
SELECT DEPARTMENT_ID,SALARY
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID,SALARY
ORDER BY SALARY DESC;

— How to retrive record where sal between 1000 to 2000?
SELECT * FROM EMPLOYEES
WHERE SALARY BETWEEN 1000 AND 2000;

— Select all records where dept no of both emp and dept table matches.
SELECT * FROM EMPLOYEES E
WHERE EXISTS
(SELECT * FROM DEPARTMENTS D
WHERE E.DEPARTMENT_ID=D.DEPARTMENT_ID);

— If there are two tables emp1 and emp2, and both have common record.
— How can I fetch all the recods but common records only once?

SELECT * FROM EMP1
UNION
SELECT * FROM EMP2;

— How to fetch only common records from two tables emp and emp1?
SELECT * FROM EMP1
INTERSECT
SELECT * FROM EMP2;

— How can I retrive all records of emp1 those should not present in emp2?
SELECT * FROM EMP1
MINUS
SELECT * FROM EMP2;

— Count the total saLARY, deptno wise where more than 2 employees exist.
SELECT DEPARTMENT_ID,SUM(SALARY) AS TOTSAL
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID
HAVING COUNT(*)>2;

--

--

ganesh kavhar
ganesh kavhar

Written by ganesh kavhar

0 Followers

SQL,Pyspark,Unix,Databricks

No responses yet