sql queries

24
SQL QUERIES SELECT last_name, salary, salary + 300 FROM employees; SELECT last_name, salary, 12*salary+100 FROM employees; SELECT last_name, salary, 12*(salary+100) FROM employees; SELECT last_name, job_id, salary, commission_pct FROM employees; SELECT last_name, 12*salary*commission_pct FROM employees; SELECT last_name AS name, commission_pct comm FROM employees; SELECT last_name "Name", salary*12 "Annual Salary"

Upload: satyanrn3

Post on 07-Dec-2015

226 views

Category:

Documents


1 download

DESCRIPTION

SQL Queries

TRANSCRIPT

SQL QUERIES

SELECT last_name, salary, salary + 300

FROM employees;

SELECT last_name, salary, 12*salary+100

FROM employees;

SELECT last_name, salary, 12*(salary+100)

FROM employees;

SELECT last_name, job_id, salary, commission_pct

FROM employees;

SELECT last_name, 12*salary*commission_pct

FROM employees;

SELECT last_name AS name, commission_pct comm

FROM employees;

SELECT last_name "Name", salary*12 "Annual Salary"

FROM employees;

SELECT last_name||job_id AS "Employees"

FROM employees;

SELECT last_name ||' is a '||job_id AS "Employee Details"

FROM employees;

SELECT department_id

FROM employees;

SELECT DISTINCT department_id

FROM employees;

DESCRIBE employees

SELECT *|{[DISTINCT] column|expression [alias],...}

FROM table;

SELECT *|{[DISTINCT] column|expression [alias],...}

FROM table

[WHERE condition(s)];

SELECT employee_id, last_name, job_id, department_id

FROM employees

WHERE department_id = 90 ;

SELECT last_name, job_id, department_id

FROM employees

WHERE last_name = 'Whalen';

Operator

=

>

>=

<

<=

<>

SELECT last_name, salary

FROM employees

WHERE salary <= 3000;

Operator

BETWEEN

...AND...

IN(set)

LIKE

IS NULL

SELECT last_name, salary

FROM employees

WHERE salary BETWEEN 2500 AND 3500;

SELECT employee_id, last_name, salary, manager_id

FROM employees

WHERE manager_id IN (100, 101, 201);

SELECT first_name

FROM employees

WHERE first_name LIKE 'S%';

SELECT last_name, manager_id

FROM employees

WHERE manager_id IS NULL;

Operator

AND

OR

NOT

SELECT employee_id, last_name, job_id, salary

FROM employees

WHERE salary >=10000

AND job_id LIKE '%MAN%';

SELECT employee_id, last_name, job_id, salary

FROM employees

WHERE salary >= 10000

OR job_id LIKE '%MAN%';

SELECT last_name, job_id

FROM employees

WHERE job_id

NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP');

Order Evaluated Operator

1 Arithmetic operators

2 Concatenation operator

3 Comparison conditions

4 IS [NOT] NULL, LIKE, [NOT] IN

5 [NOT] BETWEEN

6 NOT logical condition

7 AND logical condition

8 OR logical condition

SELECT last_name, job_id, salary

FROM employees

WHERE job_id = 'SA_REP'

OR job_id = 'AD_PRES'

AND salary > 15000;

SELECT last_name, job_id, salary

FROM employees

WHERE (job_id = 'SA_REP'

OR job_id = 'AD_PRES')

AND salary > 15000;

SELECT last_name, job_id, department_id, hire_date

FROM employees

ORDER BY hire_date ;

SELECT last_name, job_id, department_id, hire_date

FROM employees

ORDER BY hire_date DESC ;

SELECT employee_id, last_name, salary*12 annsal

FROM employees

ORDER BY annsal;

SELECT last_name, department_id, salary

FROM employees

ORDER BY department_id, salary DESC;

SELECT *|{[DISTINCT] column|expression [alias],...}

FROM table

[WHERE condition(s)]

[ORDER BY {column, expr, alias} [ASC|DESC]];

SELECT employee_id, last_name, department_id

FROM employees

WHERE last_name = 'higgins';

SELECT employee_id, last_name, department_id

FROM employees

WHERE LOWER(last_name) = 'higgins';

SELECT employee_id, CONCAT(first_name, last_name) NAME,

job_id, LENGTH (last_name),

INSTR(last_name, 'a') "Contains 'a'?"

FROM employees

WHERE SUBSTR(job_id, 4) = 'REP';

SELECT ROUND(45.923,2), ROUND(45.923,0),

ROUND(45.923,-1)

FROM DUAL;

SELECT TRUNC(45.923,2), TRUNC(45.923),

TRUNC(45.923,-2)

FROM DUAL;

SELECT last_name, salary, MOD(salary, 5000)

FROM employees

WHERE job_id = 'SA_REP';

SELECT last_name, hire_date

FROM employees

WHERE last_name like 'G%';

SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS

FROM employees

WHERE department_id = 90;

TO_CHAR(date, 'format_model')

SELECT last_name,

TO_CHAR(hire_date, 'fmDD Month YYYY')

AS HIREDATE

FROM employees;

TO_CHAR(number, 'format_model')

SELECT TO_CHAR(salary, '$99,999.00') SALARY

FROM employees

WHERE last_name = 'Ernst';

TO_NUMBER(char[, 'format_model'])

TO_DATE(char[, 'format_model'])

SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY')

FROM employees

WHERE hire_date < TO_DATE('01-Jan-90', 'DD-Mon-RR');

SELECT last_name,

NVL(TO_CHAR(manager_id), 'No Manager')

FROM employees

WHERE manager_id IS NULL;

SELECT last_name, salary, NVL(commission_pct, 0),

(salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL

FROM employees;

SELECT last_name, salary, commission_pct,

NVL2(commission_pct,

'SAL+COMM', 'SAL') income

FROM employees WHERE department_id IN (50, 80);

SELECT first_name, LENGTH(first_name) "expr1",

last_name, LENGTH(last_name) "expr2",

NULLIF(LENGTH(first_name), LENGTH(last_name)) result

FROM employees;

SELECT last_name,

COALESCE(commission_pct, salary, 10) comm

FROM employees

ORDER BY commission_pct;

CASE expr WHEN comparison_expr1 THEN return_expr1

[WHEN comparison_expr2 THEN return_expr2

WHEN comparison_exprn THEN return_exprn

ELSE else_expr]

END

SELECT last_name, job_id, salary,

CASE job_id WHEN 'IT_PROG' THEN 1.10*salary

WHEN 'ST_CLERK' THEN 1.15*salary

WHEN 'SA_REP' THEN 1.20*salary

ELSE salary END "REVISED_SALARY"

FROM employees;

DECODE(col|expression, search1, result1

[, search2, result2,...,]

[, default])

SELECT last_name, job_id, salary,

DECODE(job_id, 'IT_PROG', 1.10*salary,

'ST_CLERK', 1.15*salary,

'SA_REP', 1.20*salary,

salary)

REVISED_SALARY

FROM employees;

SELECT last_name, salary,

DECODE (TRUNC(salary/2000, 0),

0, 0.00,

1, 0.09,

2, 0.20,

3, 0.30,

4, 0.40,

5, 0.42,

6, 0.44,

0.45) TAX_RATE

FROM employees

WHERE department_id = 80;

SQL COMMANDS

To copy a table from

existing table

: INSERT INTO LSG(ARMYNO, NAME, EMPLOYMENT, MGR,

DOE, PAY, DA, DEPTNO)

SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL,

COMM, DEPTNO

FROM EMP

WHERE DEPTNO = 20;

5 rows created.

INSERT INTO LSG(ARMYNO, NAME, EMPLOYMENT, MGR,

DOE, PAY, DA, DEPTNO)

SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL,

COMM, DEPTNO

FROM EMP

WHERE HIREDATE LIKE '23-JAN-82';

To create a table from

an existing table.

: create table class (empno,ename, job, mgr, hiredate,

sal, comm, deptno)

2 as select armyno, name, employment, mgr, doe, pay,

da, deptno

3 from lsg

4 where deptno = 40;

Table created.

To delete a row : delete from lsg

where armyno like 7934;

To update/modify the

info present in a table

: EMPNO ENAME JOB MGR HIREDATE SAL COMM

DEPTNO

--------- ---------- --------- --------- --------- --------- --------- ---------

7934 MILLER CLERK 7782 23-JAN-82 1300 10

update class

set job = (select job from emp where EMPNO = 7902),

SAL = (SELECT SAL FROM EMP WHERE EMPNO = 7902)

WHERE JOB = 'CLERK';

1 row updated.SQL> SELECT *FROM CLASS;

EMPNO ENAME JOB MGR HIREDATE SAL COMM

DEPTNO

--------- ---------- --------- --------- --------- --------- --------- ---------

7934 MILLER ANALYST 7782 23-JAN-82 3000 10

DISTINCT SQL> SELECT DISTINCT DEPTNO

2 FROM LSG;

DEPTNO

---------

10

20

30

COUNT WITH DISTINCT AND

COUNT FOR ALL & FOR A

PARTICULAR FIELD

: SQL> SELECT COUNT(DISTINCT DEPTNO)

2 FROM LSG;

COUNT(DISTINCTDEPTNO)

---------------------

3

SQL> SELECT COUNT(*)

2 FROM EMP;

COUNT(*)

---------

14

SQL> SELECT COUNT (*) COMM

2 FROM EMP;

COMM

---------

14

TO CONVERT DATE

DATETYPE TO CHAR VALUE: SQL> SELECT EMPNO, ENAME, TO_CHAR(HIREDATE, 'MONTH DD,

YYYY HH:MI:SS A.M.') "NEW DATE"

2 FROM CLASS

3 WHERE EMPNO = 7934;

EMPNO ENAME NEW DATE

--------- ---------- --------------------------------

7934 MILLER JANUARY 23, 1982 12:00:00 A.M.

ROUND : SQL> SELECT ROUND (SYSDATE, 'MONTH')

2 FROM DUAL;

ROUND(SYS

---------

01-DEC-05

SQL> SELECT ROUND (SYSDATE, 'YEAR')

2 FROM DUAL;

ROUND(SYS

---------

01-JAN-06

SQL> SELECT ROUND(43.923, 2)

2 FROM DUAL;

ROUND(43.923,2)

---------------

43.92

SQL> SELECT ROUND (43.923, -1)

2 FROM DUAL;

ROUND(43.923,-1)

----------------

40

SQL> SELECT ROUND (43.923, -2)

2 FROM DUAL;

ROUND(43.923,-2)

----------------

0

TRUNC : SQL> SELECT TRUNC (SYSDATE, 'MONTH')

2 FROM DUAL;

TRUNC(SYS

---------

01-DEC-05

SQL> SELECT TRUNC (SYSDATE, 'YEAR')

2 FROM DUAL;

TRUNC(SYS

---------

01-JAN-05

ADD_MONTHS : SQL> SELECT ADD_MONTHS (DOE, 4)

2 FROM LSG;

ADD_MONTH

---------

17-APR-81

20-JUN-81

MONTHS_BETWEEN : SQL> SELECT MONTHS_BETWEEN ('08-SEP-81','23-JAN-82')

2 FROM LSG;

MONTHS_BETWEEN('08-SEP-81','23-JAN-82')

---------------------------------------

-4.483871

SQL> SELECT MONTHS_BETWEEN ('23-JAN-82', '08-SEP-81')

2 FROM LSG;

MONTHS_BETWEEN('23-JAN-82','08-SEP-81')

---------------------------------------

4.483871

NEXT_DAY : SQL> SELECT NEXT_DAY ('23-JAN-82', 'SUNDAY')

2 FROM DUAL;

3 NEXT_DAY

4 ---------

5 25-JAN-82

SQL> SELECT DOE, DOE+7

2 FROM LSG;

DOE DOE+7

--------- ---------

17-DEC-80 24-DEC-80

CHARACTER FUNCTIONS

LOWER

UPPER

INITCAP

SELECT EMPNO, ENAME, SAL, DEPTNO

FROM EMP

WHERE LOWER(ENAME) = 'smith';

EMPNO ENAME SAL DEPTNO

----- ---------- --------- ---------

7369 SMITH 800 20

SQL> SELECT EMPNO, ENAME, SAL, DEPTNO

2 FROM EMP

3 where initcap(ename) = 'Smith';

EMPNO ENAME SAL DEPTNO

--------- ---------- --------- ---------

7369 SMITH 800 20

select empno, ename, sal, deptno

from EMP

WHERE UPPER(ENAME)='SMITH';

EMPNO ENAME SAL DEPTNO

----- ---------- --------- ---------

7369 SMITH 800 20

ORDERBY

ASCENDING OR DESCENDING: SQL> SELECT ENAME, SAL, DEPTNO

2 FROM EMP

3 ORDER BY DEPTNO DESC;

ENAME SAL DEPTNO

---------- --------- ---------

ALLEN 1600 30

WARD 1250 30

MARTIN 1250 30

JAMES 950 30

NOT IN : SQL> SELECT *FROM EMP

2 WHERE DEPTNO NOT IN(10,20);

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

IN : SQL> SELECT *FROM EMP

2 WHERE DEPTNO IN (10,20);

EMPNO ENAME JOB MGR HIREDATE SAL COMM

DEPTNO

--------- ---------- --------- --------- --------- --------- --------- ---------

7369 SMITH CLERK 7902 17-DEC-80 800 20

7566 JONES MANAGER 7839 02-APR-81 2975 20

7782 CLARK MANAGER 7839 09-JUN-81 2450 10

BETWEEN : SQL> SELECT ENAME, SAL, DEPTNO FROM EMP

2 WHERE SAL BETWEEN 1500 AND 5000;

ENAME SAL DEPTNO

---------- --------- ---------

ALLEN 1600 30

JONES 2975 20

NOT BETWEEN : SQL> SELECT ENAME, SAL, DEPTNO FROM EMP

2 WHERE SAL NOT BETWEEN 1500 AND 5000;

ENAME SAL DEPTNO

---------- --------- ---------

SMITH 800 20

WARD 1250 30

MARTIN 1250 30

LIKE : SQL> SELECT ENAME, JOB, SAL, DEPTNO FROM EMP

2 WHERE JOB LIKE '%AN%';

ENAME JOB SAL DEPTNO

---------- --------- --------- ---------

ALLEN SALESMAN 1600 30

WARD SALESMAN 1250 30

JONES MANAGER 2975 20

NOT LIKE : SQL> SELECT ENAME, JOB, SAL, DEPTNO FROM EMP

2 WHERE JOB NOT LIKE '%MAN';

ENAME JOB SAL DEPTNO

---------- --------- --------- ---------

SMITH CLERK 800 20

JONES MANAGER 2975 20

BLAKE MANAGER 2850 30

CLARK MANAGER 2450 10

GROUP FUNCTION

AVG, SUM, MAX, MIN,

COUNT,

: SQL> SELECT AVG(SAL), MAX(SAL), MIN(SAL), SUM(SAL)

2 FROM EMP

3 WHERE DEPTNO = 10

4 ORDER BY DEPTNO;

AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL)

--------- --------- --------- ---------

2916.6667 5000 1300 8750

NVL : SQL> SELECT NVL(COMM,1)

2 FROM EMP;

NVL(COMM,1)

-----------

1

300

500

1

1400

1

SQL> SELECT NVL(COMM, (COMM*12))

2 FROM EMP;

NVL(COMM,(COMM*12))

-------------------

300

500

1400

0

GROUPT BY FUNCTION : SQL> SELECT DEPTNO, JOB, SUM(SAL)

2 FROM EMP

3 GROUP BY DEPTNO, JOB ;

DEPTNO JOB SUM(SAL)

--------- --------- ---------

10 CLERK 1300

10 MANAGER 2450

SQL> SELECT DEPTNO, JOB, SUM(SAL)

2 FROM EMP

3 GROUP BY JOB, DEPTNO ;

DEPTNO JOB SUM(SAL)

--------- --------- ---------

20 ANALYST 6000

10 CLERK 1300