KEMBAR78
Introduction To SQL | PDF | Computer Programming | Data Management Software
0% found this document useful (0 votes)
27 views7 pages

Introduction To SQL

Uploaded by

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

Introduction To SQL

Uploaded by

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

Retrieving data Using SELECT STATEMENT

1. Determine the Structure of DEPT Table and its Contents


a. To see the structure of the DEPT table:
DESC DEPT;
b. To see the contents of the DEPT table:
SELECT * FROM DEPT;

2. Determine the Structure of EMP Table and its Contents


a. To see the structure of the EMP table:
DESC EMP;
b. To see the contents of the EMP table:
SELECT * FROM EMP;

3. Display the Ename and Deptno from Emp table whose Empno is 7788
SELECT ENAME, DEPTNO FROM EMP WHERE EMPNO = 7788;

Restricting and Sorting Data

1. Display Ename, Sal, Comm of employees who earn commission and sort
records in descending order of Salary and Comm using numeric position
SELECT ENAME, SAL, COMM FROM EMP WHERE COMM IS NOT NULL ORDER BY 2 DESC, 3
DESC; -- 2: SAL, 3: COMM

2. HR department need a query to Display all unique job codes from the EMP
table
SELECT DISTINCT JOB FROM EMP;

3. HR department wants more descriptive column headings for its report on


employee Display employee report with column aliases: Emp #, Employee, Job,
Hire Date
SELECT EMPNO AS "Emp #", ENAME AS "Employee", JOB AS "Job", HIREDATE AS "Hire
Date" FROM EMP;

4. HR department requested a report of all employees with their job ids.


Display Last Name and Job ID concatenated, with alias: Employee, Title
SELECT ENAME || ', ' || JOB AS "Employee and Title" FROM EMP;

5. Display all data from EMP table, separating columns with commas, and use
alias THE_OUTPUT
SELECT EMPNO || ',' || ENAME || ',' || JOB || ',' || HIREDATE || ',' || MGR AS "THE_OUTPUT"
FROM EMP;

6. Display Ename, Job, Hiredate of employees named SCOTT or TURNER,


ordered by Hiredate
SELECT ENAME, JOB, HIREDATE FROM EMP WHERE ENAME IN ('SCOTT', 'TURNER') ORDER
BY HIREDATE ASC;

7. Display Ename and Deptno of all employees in departments 20 or 30, sorted


by Ename
SELECT ENAME, DEPTNO FROM EMP WHERE DEPTNO IN (20, 30) ORDER BY ENAME ASC;
8. Modify previous query: Display last name and salary of employees who earn
between 2000–3000 and are in department 20 or 30, with aliases
SELECT ENAME AS "Employee", SAL AS "Monthly Salary" FROM EMP
WHERE SAL BETWEEN 2000 AND 3000 AND DEPTNO IN (20, 30);

9. Display last name and hire date for employees hired in 1981
SELECT ENAME, HIREDATE FROM EMP WHERE TO_CHAR(HIREDATE, 'YYYY') = '1981';

10. Display ENAME and SAL of employees who earn more than an amount
specified by user (Prompt)
SELECT ENAME, SAL FROM EMP WHERE SAL > &Enter_Salary;

11. Display last name and job title of employees who do not have a manager
SELECT ENAME, JOB FROM EMP WHERE MGR IS NULL;

12. Query prompts for Manager ID and displays EMPNO, ENAME, SAL, DEPTNO
with sorting option
ELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP WHERE MGR = &Manager_ID ORDER BY
&Sort_Column;

13. Prompt for MGR ID, and display EMPNO, ENAME, SAL, DEPTNO of their
employees. Allow sorting on any selected column.
SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP WHERE MGR = &MGR_ID ORDER BY
&Sort_Column;
Example prompt:
Enter value for MGR_ID: 7839
Enter value for Sort_Column: SAL

14. Display all employee last names where the 3rd letter is ‘A’
SELECT ENAME FROM EMP WHERE SUBSTR(ENAME, 3, 1) = 'A';

15. Display last names of all employees who have both ‘A’ and ‘S’ in their name
SELECT ENAME FROM EMP WHERE ENAME LIKE '%A%' AND ENAME LIKE '%S%';

16. Display ENAME, JOB, SAL of all employees whose job is CLERK and salary is
800, 950, or 1300
SELECT ENAME, JOB, SAL FROM EMP WHERE JOB = 'CLERK' AND SAL IN (800, 950, 1300);

Single Row Funtion to Cusomize the Output

1. Display the current date. Label the column as "Date".


SELECT SYSDATE AS "Date" FROM DUAL;

2. Display Empno, Last Name, Salary, and New Salary (15.5% increase)
SELECT EMPNO, ENAME, SAL, ROUND(SAL + (SAL * 15.5 / 100)) AS "New Salary" FROM
EMP;

3. Add a column that shows the increase amount as "Increase"


SELECT EMPNO, ENAME, SAL, ROUND(SAL + (SAL * 15.5 / 100)) AS "New Salary",
ROUND(SAL * 15.5 / 100) AS "Increase" FROM EMP;

4. Display Ename with only the first letter uppercase, rest lowercase, and
length of Ename for names starting with J, A, or M
SELECT INITCAP(ENAME) AS "Employee Name", LENGTH(ENAME) AS "Name Length"
FROM EMP WHERE UPPER(SUBSTR(ENAME, 1, 1)) IN ('J', 'A', 'M') ORDER BY ENAME;
5. Prompt the user to enter a letter; display all employees whose last name
starts with that letter
SELECT ENAME FROM EMP WHERE ENAME LIKE '&Enter_Letter%';

6. Display employee name and number of months worked (rounded up), label
column as MONTHS_WORKED
SELECT ENAME, ROUND (MONTHS_BETWEEN (SYSDATE, HIREDATE)) AS
MONTHS_WORKED
FROM EMP ORDER BY MONTHS_WORKED;

7. Dream Salaries (Earns Monthly but Wants <3 Times Salary)


SELECT last_name || ' earns ' || TO_CHAR(salary, '9999.99') || ' monthly but wants < ' ||
TO_CHAR(salary * 3, '9999.99') AS "Dream Salaries" FROM employees;

8. Format Salary with $ and Left Padding


SELECT last_name, LPAD(TO_CHAR(salary, '$999,999.00'), 15, ' ') AS SALARY
FROM employees;

9. Salary Review Date: First Monday After 6 Months


SELECT last_name, hire_date, TO_CHAR(NEXT_DAY(ADD_MONTHS(hire_date, 6)-1,
'MONDAY'), 'Day, "the" DDth "of" Month, YYYY') AS REVIEW FROM employees;

10. Day of Week of Joining (Start with Monday)


SELECT last_name, hire_date, TO_CHAR(hire_date, 'Day') AS DAY FROM employees
ORDER BY TO_CHAR(hire_date, 'D'); -- Oracle NLS_TERRITORY must be set to start week
on Monday

11. Show Commission or "No Commission"


SELECT last_name, NVL(TO_CHAR(commission_pct), 'No Commission') AS COMM FROM
employees;

12. Asterisks per $1000 of Salary


SELECT SUBSTR(last_name, 1, 8) AS NAME, RPAD('*', TRUNC(salary / 1000), '*') AS
EMPLOYEES_AND_THEIR_SALARIES FROM employees ORDER BY salary DESC;

13. DECODE to Display Grade Based on JOB_ID


SELECT last_name, job_id, DECODE(job_id,
'PRESIDENT', 'A',
'MANAGER', 'B',
'SALESMAN', 'C',
'CLERK', 'D',
'Unknown') AS GRADE FROM employees;

14. Rewrite Above Using CASE


SELECT last_name, job_id,
CASE job_id
WHEN 'PRESIDENT' THEN 'A'
WHEN 'MANAGER' THEN 'B'
WHEN 'SALESMAN' THEN 'C'
WHEN 'CLERK' THEN 'D'
ELSE 'Unknown'
END AS GRADE FROM employees;

Reporting Aggregated Data Using Group Function


1. Highest, Lowest, Sum, and Average Salary
SELECT MAX(salary) AS Maximum, MIN(salary) AS Minimum, SUM(salary) AS
Sum, ROUND(AVG(salary)) AS Average FROM employees;
2. Rounded Group Functions
SELECT JOB, ROUND(MIN(SAL)) AS Minimum, ROUND(MAX(SAL)) AS Maximum,
ROUND(SUM(SAL)) AS Sum, ROUND(AVG(SAL)) AS Average FROM EMP GROUP BY
JOB;
3. Min, Max, Sum, Avg Salary by Job Type
SELECT job_id, MIN(salary) AS Min_Salary, MAX(salary) AS Max_Salary,
SUM(salary) AS Total_Salary, ROUND(AVG(salary)) AS Avg_Salary FROM
employees GROUP BY job_id;

4. Number of People with the Same Job


SELECT job_id, COUNT(*) AS Num_Employees FROM employees GROUP BY job_id;

5. Number of Managers
SELECT COUNT(DISTINCT manager_id) AS "Number of Managers" FROM
employees WHERE manager_id IS NOT NULL;

6. Difference Between Highest and Lowest Salaries


SELECT MAX(salary) - MIN(salary) AS DIFFERENCE FROM employees;

7. Manager ID and Salary of Lowest-Paid Employee (with conditions)


SELECT manager_id, MIN(salary) AS Lowest_Salary FROM employees WHERE
manager_id IS NOT NULL GROUP BY manager_id HAVING MIN(salary) > 2000
ORDER BY Lowest_Salary DESC;

8. Total Employees & Number Hired in 1980, 1981, 1982


SELECT COUNT(*) AS Total_Employees,
SUM(CASE WHEN EXTRACT(YEAR FROM hire_date) = 1980 THEN 1 ELSE 0 END)
AS "Hired_1980",
SUM(CASE WHEN EXTRACT(YEAR FROM hire_date) = 1981 THEN 1 ELSE 0 END)
AS "Hired_1981",
SUM(CASE WHEN EXTRACT(YEAR FROM hire_date) = 1982 THEN 1 ELSE 0 END)
AS "Hired_1982" FROM employees;

Using Set Operation


1. Matrix Query to Display Job, Department-wise Salary, and Total Salary
SELECT job,
SUM(CASE WHEN deptno = 10 THEN sal ELSE 0 END) AS "Dept 10 Salary",
SUM(CASE WHEN deptno = 20 THEN sal ELSE 0 END) AS "Dept 20 Salary",
SUM(CASE WHEN deptno = 30 THEN sal ELSE 0 END) AS "Dept 30 Salary",
SUM(sal) AS "Total Salary" FROM employeesn GROUP BY job;

2. Set Operator for DEPTNO-wise and JOB-wise Salary Totals


SELECT deptno, NULL AS job, SUM(sal) AS total_salary FROM employees GROUP
BY deptno UNION SELECT NULL AS deptno, job, SUM(sal) AS total_salary FROM
employees GROUP BY job;

3. Set Operator to Display JOB and DEPTNO for DEPTNOs 20, 10, 30 (in
that order)
SELECT job, deptno FROM employees WHERE deptno = 20 UNION ALL
SELECT job, deptno FROM employees WHERE deptno = 10 UNION ALL
SELECT job, deptno FROM employees WHERE deptno = 30;

Display Data from Multiple Tables Using Joins

1. Display employee number, name, salary, department name, and


location using natural join.
SELECT EMPNO, ENAME, SAL, DNAME, LOC FROM EMP NATURAL JOIN DEPT;

2. Display job, manager, salary, commission, and department name of


all salesmen using equi join.
SELECT JOB, MGR, SAL, COMM, DNAME FROM EMP E, DEPT D WHERE E.DEPTNO
= D.DEPTNO AND JOB = 'SALESMAN';

3. Display employee name, job, department number, and department


name of all employees working in DALLAS using equi join.
SELECT ENAME, JOB, E.DEPTNO, DNAME FROM EMP E, DEPT D WHERE E.DEPTNO
= D.DEPTNO AND LOC = 'DALLAS';

4. Display employee name, employee number, manager name, and


manager number using self join.
SELECT E1.ENAME AS Employee, E1.EMPNO AS "Emp#", E2.ENAME AS Manager,
E1.MGR AS "Mgr#" FROM EMP E1 JOIN EMP E2 ON E1.MGR = E2.EMPNO;

5. Display employee name, employee number, manager name, and


manager number using LEFT OUTER JOIN. Include employees without
managers.
SELECT E1.ENAME AS Employee, E1.EMPNO AS "Emp#", E2.ENAME AS Manager,
E1.MGR AS "Mgr#" FROM EMP E1 LEFT JOIN EMP E2 ON E1.MGR = E2.EMPNO
ORDER BY E1.EMPNO;

6. Display employee name, job, department name, salary, and salary


grade using non-equi join.
SELECT E.ENAME, E.JOB, D.DNAME, E.SAL, S.GRADE FROM EMP E JOIN DEPT D ON
E.DEPTNO = D.DEPTNO JOIN SALGRADE S ON E.SAL BETWEEN S.LOSAL AND
S.HISAL;

7. Display employee name and department name using RIGHT OUTER


JOIN. Include departments without employees.
SELECT E.ENAME, D.DNAME FROM EMP E RIGHT JOIN DEPT D ON E.DEPTNO =
D.DEPTNO;

8. Display employee name and hiredate along with their manager’s


name and hiredate using self join. Only show employees hired before
their managers.
SELECT E1.ENAME AS Employee, E1.HIREDATE AS Emp_HireDate, E2.ENAME AS
Manager, E2.HIREDATE AS Mgr_HireDate FROM EMP E1 JOIN EMP E2 ON E1.MGR
= E2.EMPNO WHERE E1.HIREDATE < E2.HIREDATE;

9. Display employee number, name, department name, and location of


clerks using USING clause.
SELECT EMPNO, ENAME, DNAME, LOC FROM EMP JOIN DEPT USING(DEPTNO)
WHERE JOB = 'CLERK';

10. Display employee name, salary, manager, and department name for
employees whose salary is more than 2000 using ON clause.
SELECT ENAME, SAL, MGR, DNAME FROM EMP E JOIN DEPT D ON E.DEPTNO =
D.DEPTNO WHERE SAL > 2000;

11. Display employee number, job, department number, department


name, and location using LEFT OUTER JOIN.
SELECT EMPNO, JOB, E.DEPTNO, DNAME, LOC FROM EMP E LEFT OUTER JOIN
DEPT D ON E.DEPTNO = D.DEPTNO;

12. Display employee name and department name using RIGHT OUTER
JOIN. Include all departments even if they don’t have any employees.
SELECT ENAME, DNAME FROM EMP E RIGHT OUTER JOIN DEPT D ON E.DEPTNO =
D.DEPTNO;
13. Display employee number, department name, and location using
FULL OUTER JOIN. Include all employees and all departments.
SELECT EMPNO, DNAME, LOC FROM EMP E FULL OUTER JOIN DEPT D ON
E.DEPTNO = D.DEPTNO;

You might also like