-
Write query to select all the columns of emp table.
| EMPNO |
ENAME |
JOB |
MGR |
HIREDATE |
SAL |
COMM |
DEPTNO |
| 7839 |
KING |
PRESIDENT |
- |
17-NOV-81 |
5000 |
- |
10 |
| 7698 |
BLAKE |
MANAGER |
7839 |
01-MAY-81 |
2850 |
- |
30 |
| 7782 |
CLARK |
MANAGER |
7839 |
09-JUN-81 |
2450 |
- |
10 |
| 7566 |
JONES |
MANAGER |
7839 |
02-APR-81 |
2975 |
- |
20 |
| 7788 |
SCOTT |
ANALYST |
7566 |
19-APR-87 |
3000 |
- |
20 |
| 7902 |
FORD |
ANALYST |
7566 |
03-DEC-81 |
3000 |
- |
20 |
| 7369 |
SMITH |
CLERK |
7902 |
17-DEC-80 |
800 |
- |
20 |
| 7499 |
ALLEN |
SALESMAN |
7698 |
20-FEB-81 |
1600 |
300 |
30 |
| 7521 |
WARD |
SALESMAN |
7698 |
22-FEB-81 |
1250 |
500 |
30 |
| 7654 |
MARTIN |
SALESMAN |
7698 |
28-SEP-81 |
1250 |
1400 |
30 |
| 7844 |
TURNER |
SALESMAN |
7698 |
08-SEP-81 |
1500 |
0 |
30 |
| 7876 |
ADAMS |
CLERK |
7788 |
23-MAY-87 |
1100 |
- |
20 |
| 7900 |
JAMES |
CLERK |
7698 |
03-DEC-81 |
950 |
- |
30 |
| 7934 |
MILLER |
CLERK |
7782 |
23-JAN-82 |
1300 |
- |
10 |
-
Write query to select only EMPNAME, ENAME and JOB.
SELECT ENAME, EMPNO, JOB FROM EMP;
| ENAME |
EMPNO |
JOB |
| KING |
7839 |
PRESIDENT |
| BLAKE |
7698 |
MANAGER |
| CLARK |
7782 |
MANAGER |
| JONES |
7566 |
MANAGER |
| SCOTT |
7788 |
ANALYST |
| FORD |
7902 |
ANALYST |
| SMITH |
7369 |
CLERK |
| ALLEN |
7499 |
SALESMAN |
| WARD |
7521 |
SALESMAN |
| MARTIN |
7654 |
SALESMAN |
| TURNER |
7844 |
SALESMAN |
| ADAMS |
7876 |
CLERK |
| JAMES |
7900 |
CLERK |
| MILLER |
7934 |
CLERK |
-
Write query to select unique JOBs.
SELECT UNIQUE JOB FROM EMP;
| JOB |
| ANALYST |
| CLERK |
| SALESMAN |
| MANAGER |
| PRESIDENT |
-
Write a query to select only those employees who are salesman.
SELECT * FROM EMP
WHERE JOB = 'SALESMAN';
| EMPNO |
ENAME |
JOB |
MGR |
HIREDATE |
SAL |
COMM |
DEPTNO |
| 7499 |
ALLEN |
SALESMAN |
7698 |
20-FEB-81 |
1600 |
300 |
30 |
| 7521 |
WARD |
SALESMAN |
7698 |
22-FEB-81 |
1250 |
500 |
30 |
| 7654 |
MARTIN |
SALESMAN |
7698 |
28-SEP-81 |
1250 |
1400 |
30 |
| 7844 |
TURNER |
SALESMAN |
7698 |
08-SEP-81 |
1500 |
0 |
30 |
-
Select employee name, grade and salary in the order of their salary.
SELECT ENAME, EMPNO, DEPTNO FROM EMP
ORDER BY SAL;
| EMPNO |
ENAME |
DEPTNO |
| SMITH |
7369 |
20 |
| JAMES |
7900 |
30 |
| ADAMS |
7876 |
20 |
| MARTIN |
7654 |
30 |
| WARD |
7521 |
30 |
| MILLER |
7934 |
10 |
| TURNER |
7844 |
30 |
| ALLEN |
7499 |
30 |
| CLARK |
7782 |
10 |
| BLAKE |
7698 |
30 |
| JONES |
7566 |
20 |
| FORD |
7902 |
20 |
| SCOTT |
7788 |
20 |
| KING |
7839 |
10 |
-
Mgmt is considering a pay raise, however they want to find out, if they give a flat $200
increment to all, then what % each person is getting. So in your result, display ENAME,
SAL and PCTINCR
SELECT ENAME, SAL, 200/SAL*100 AS PCTINCR
FROM EMP;
| ENAME |
SAL |
PCTINCR |
| KING |
5000 |
4 |
| BLAKE |
2850 |
7.01754385964912280701754385964912280702 |
| CLARK |
2450 |
8.16326530612244897959183673469387755102 |
| JONES |
2975 |
6.72268907563025210084033613445378151261 |
| SCOTT |
3000 |
6.66666666666666666666666666666666666667 |
| FORD |
3000 |
6.66666666666666666666666666666666666667 |
| SMITH |
800 |
25 |
| ALLEN |
1600 |
12.5 |
| WARD |
1250 |
16 |
| MARTIN |
1250 |
16 |
| TURNER |
1500 |
13.33333333333333333333333333333333333333 |
| ADAMS |
1100 |
18.18181818181818181818181818181818181818 |
| JAMES |
950 |
21.05263157894736842105263157894736842105 |
| MILLER |
1300 |
15.38461538461538461538461538461538461538 |
-
Express work experience of each of the employees by using sysdate and hiredate in terms
of no of years.
SELECT
TO_CHAR(HIREDATE, 'DD.MM.YYYY') "HIREDATE",
TO_CHAR(SYSDATE, 'DD.MM.YYYY') "Today",
(SYSDATE-HIREDATE)/365 "EXPERIENCE"
FROM EMP;
| hiredate |
Today |
experience |
| 17.11.1981 |
03.01.2023 |
41.15791945712836123795027904616945712849 |
| 01.05.1981 |
03.01.2023 |
41.70586466260781329274479959411466260795 |
| 09.06.1981 |
03.01.2023 |
41.59901534753932014205986808726534753945 |
| 02.04.1981 |
03.01.2023 |
41.78531671740233384069000507356671740247 |
| 19.04.1987 |
03.01.2023 |
35.73600164890918315575849822425164890932 |
| 03.12.1981 |
03.01.2023 |
41.11408384069000507356671740233384069014 |
| 17.12.1980 |
03.01.2023 |
42.07572767630644342973110096397767630658 |
| 20.02.1981 |
03.01.2023 |
41.89764548452562151192288178589548452575 |
| 22.02.1981 |
03.01.2023 |
41.89216603247082699137493658041603247096 |
| 28.09.1981 |
03.01.2023 |
41.29490575849822425164890918315575849836 |
| 08.09.1981 |
03.01.2023 |
41.3497002790461694571283612379502790463 |
| 23.05.1987 |
03.01.2023 |
35.64285096397767630644342973110096397781 |
| 03.12.1981 |
03.01.2023 |
41.11408384069000507356671740233384069014 |
| 23.01.1982 |
03.01.2023 |
40.97435781329274479959411466260781329288 |
CREATE TABLE EMPSAL (EMPID NUMBER(3),
PROJECT VARCHAR(2),
SAL NUMBER(7,2),
CONSTRAINT PK_EMPID PRIMARY KEY(EMPID)
);
CREATE TABLE EMPDET
(
EMPID NUMBER(3),
FNAME VARCHAR(16),
MGID NUMBER(3),
JDT DATE,
CONSTRAINT PK_MGID PRIMARY KEY(MGID),
CONSTRAINT FK_EMPID FOREIGN KEY(EMPID) REFERENCES EMPSAL(EMPID)
);
INSERT INTO EMPSAL VALUES(121, 'P1', 8000);
INSERT INTO EMPSAL VALUES(321, 'P2', 1000);
INSERT INTO EMPSAL VALUES(421, 'P1', 12000);
INSERT INTO EMPDET VALUES(121, 'JOHN SNOW', 321, DATE '2014-01-31');
INSERT INTO EMPDET VALUES(321, 'WALTER WHITE', 986, DATE '2015-01-30');
INSERT INTO EMPDET VALUES(421, 'KULDEEP RANA', 876, DATE '2016-11-27');
-
Write a SQL query to fetch the count of employees working in project 'P1'.
SELECT COUNT(*) AS COUNT FROM EMPSAL
WHERE PROJECT='P1';
-
Write a SQL query to fetch employee names having salary greater than or equal to 5000
and less than or equal 10000.
SELECT FNAME FROM EMPSAL
INNER JOIN EMPDET ON EMPSAL.EMPID=EMPDET.EMPID
WHERE EMPSAL.SAL BETWEEN 5000 AND 10000;
-
Write a SQL query to fetch project-wise count of employees sorted by project's count in
descending order.
SELECT PROJECT, COUNT(*) AS COUNT FROM EMPSAL
GROUP BY PROJECT
ORDER BY COUNT DESC;
-
Write a query to fetch only the first name(string before space) from the Full Name
column of EmployeeDetails table.
SELECT SUBSTR(FNAME,1,INSTR(FNAME,' ')-1) AS FIRSTNAME
FROM EMPDET;
| FIRSTNAME |
| John |
| Walter |
| Kuldeep |
-
Write a query to fetch employee names and salary records. Return employee details even
if the salary record is not present for the employee.
SELECT FNAME, SAL FROM EMPDET
LEFT JOIN EMPSAL ON EMPSAL.EMPID=EMPDET.EMPID;
| FNAME |
SAL |
| John Snow |
8000 |
| Walter White |
1000 |
| Kuldeep Rana |
12000 |
-
Write a SQL query to fetch all the Employees who are also managers from EmployeeDetails
table.
SELECT * FROM EMPDET E
WHERE EXISTS (SELECT * FROM EMPDET S WHERE E.EMPID = S.MGID);
| EMPID |
FNAME |
MGID |
JDT |
| 321 |
Walter White |
986 |
30-JAN-15 |
-
Write a SQL query to fetch all employee records from EmployeeDetails table who have a
salary record in EmployeeSalary table.
SELECT * FROM EMPDET E
WHERE EXISTS (SELECT * FROM EMPSAL S WHERE E.EMPID = S.EMPID);
| EMPID |
FNAME |
MGID |
JDT |
| 121 |
John Snow |
321 |
31-JAN-14 |
| 321 |
Walter White |
986 |
30-JAN-15 |
| 421 |
Kuldeep Rana |
876 |
27-NOV-16 |
-
Write a SQL query to fetch duplicate records from a table.
SELECT EMPID, FNAME, MGID, JDT FROM EMPDET
GROUP BY EMPID, FNAME, MGID, JDT
HAVING COUNT(*) > 1;
-
Write a SQL query to remove duplicates from a table without using temporary table.
DELETE FROM EMPSAL
WHERE ROWID NOT IN (SELECT MAX(ROWID) FROM EMPSAL GROUP BY EMPID);
-
Write a SQL query to fetch only odd rows from table.
SELECT E.EMPID, E.PROJECT, E.SAL FROM (
SELECT ROW_NUMBER() OVER(ORDER BY EMPID) AS ROWNUMBER, EMPID, PROJECT, SAL FROM EMPSAL) E
WHERE MOD(E.ROWNUMBER, 2) = 1;
| EMPID |
PROJECT |
SAL |
| 121 |
P1 |
8000 |
| 421 |
P1 |
12000 |
-
Write a SQL query to fetch only even rows from table.
SELECT E.EMPID, E.PROJECT, E.SAL FROM (
SELECT ROW_NUMBER() OVER(ORDER BY EMPID) AS ROWNUMBER, EMPID, PROJECT, SAL FROM EMPSAL) E
WHERE MOD(E.ROWNUMBER, 2) = 0;
| EMPID |
PROJECT |
SAL |
| 321 |
P2 |
1000 |
-
Write a SQL query to create a new table with data and structure copied from another
table.
SELECT * INTO EMPSALARY
FROM EMPSAL;
-
Write a SQL query to create an empty table with same structure as some other table.
SELECT * INTO EMPSALARY FROM EMPSAL
WHERE 1=0;
-
Write a SQL query to fetch common records between two variables.
SELECT * FROM EMPSAL
INTERSECT SELECT * FROM MGSAL;
-
Write a SQL query to fetch records that are present in one table but not in another
table.
SELECT * FROM EMPSAL
MINUS SELECT * FROM MGSAL;
-
Write a SQL query to find current date-time.
-
Write a SQL query to fetch all the Employees details from EmployeeDetails table who
joined in year 2016.
SELECT * FROM EMPDET
WHERE JDT BETWEEN DATE '2016-01-01' AND DATE '2016-12-31';
| EMPID |
FNAME |
MGID |
JDT |
| 421 |
Kuldeep Rana |
876 |
27-NOV-16 |
-
Write a SQL query to fetch top n records.
SELECT * FROM EMPSAL
ORDER BY SAL DESC
FETCH NEXT 2 ROWS ONLY;
| EMPID |
PROJECT |
SAL |
| 421 |
P1 |
12000 |
| 121 |
P1 |
8000 |
-
Write a SQL query to find the nth highest salary from table.
SELECT * FROM (
SELECT * FROM EMPSAL ORDER BY SAL DESC FETCH NEXT 2 ROWS ONLY
) ORDER BY SAL ASC
FETCH NEXT 1 ROWS ONLY;
| EMPID |
PROJECT |
SAL |
| 121 |
P1 |
8000 |
-
Write SQL query to find the 3rd highest salary from table without using TOP/limit
keyword.
SELECT SAL
FROM EMPSAL EMP1
WHERE 2 = (
SELECT COUNT( DISTINCT( EMP2.SAL ) ) FROM EMPSAL EMP2
WHERE EMP2.SAL > EMP1.SAL
);