Professional Documents
Culture Documents
1
SQL = DML + DDL + DCL
+ TRANSACTION CONTROL
2
MODELO DE DATOS
emp
dept empno
deptno ename
dname job
loc mgr
hiredate
sal
salgrade comm
grade deptno
losal
hisal
3
CONSULTA 81
4
CONSULTA 82
SELECT ename, TRUNC (SAL/3,3)
FROM emp
WHERE deptno = 20;
ENAME TRUNC(SAL/3,3)
----------- --------------
JONES 991.666
FORD 1000
SMITH 266.666
SCOTT 1000
ADAMS 366.666
5
CONSULTA 83
6
CONSULTA 84
SELECT ename, hiredate, SYSDATE,(SYSDATE-hiredate)/7 AS SEMANAS
FROM emp
WHERE deptno=10;
7
CONSULTA 85
SELECT empno, hiredate,
MONTHS_BETWEEN (SYSDATE, hiredate) AS meses,
ADD_MONTHS (hiredate, 6) AS revision,
LAST_DAY (hiredate) AS fin_mes
FROM emp
WHERE MONTHS_BETWEEN(SYSDATE, hiredate) >= 80;
8
CONSULTA 86
SELECT empno, hiredate, ROUND (hiredate,'MONTH'),
TRUNC (hiredate,'MONTH')
FROM emp
WHERE hiredate LIKE '%11';
EMPNO M_HIRED
---------- -------
7698 05/2011
TO_CHAR
TO_CHAR
TO_DATE TO_NUMBER 10
CONSULTA 88
ENAME H_DATE
----------- --------------------------------------
KING Seventeenth de Noviembre 2011
CLARK Ninth de Junio 2011
11
CONSULTA 89
SALARY
-------
$3000
12
CONSULTA 90
ENAME HIREDATE
----------- --------
WARD 22/02/11
13
CONSULTA 91.
SELECT ename, sal, comm, (sal*12) + NVL(comm, 0) AS NVL
FROM emp
WHERE deptno <> 20;
15
14 rows selected.
CONSULTA 93
SELECT ename, job, sal,
DECODE(job,
JOB SAL NUEVO
'ANALYST', sal*1.1, ------------- ---------- ----------
'CLERK', sal*1.55, PRESIDENT 5000 5000
'MANAGER', sal*1.2, MANAGER 2850 3420
sal) AS nuevo MANAGER 2450 2940
FROM emp; MANAGER 2975 3570
SALESMAN 1250 1250
SALESMAN 1600 1600
SALESMAN 1500 1500
CLERK 950 1472.5
SALESMAN 1250 1250
ANALYST 3000 3300
CLERK 800 1240
ANALYST 3000 3300
CLERK 1100 1705
CLERK 1300 2015
16
CONSULTA 94
SELECT ename,sal, DECODE (TRUNC(sal/1000,0),
0, 0.00,
1, 0.09,
2, 0.20,
3, 0.30,
4, 0.40,
5, 0.42,
6, 0.44,
0.45) Tasa_de_impuesto
FROM emp
WHERE deptno=30;
ENAME SAL TAX_RATE
----------- ---------- ----------
BLAKE 2850 .2
MARTIN 1250 .09
ALLEN 1600 .09
TURNER 1500 .09
JAMES 950 0
WARD 1250 .09
17
6 filas seleccionadas.
CONSULTA 95
SELECT ename, hiredate, TO_CHAR(ADD_MONTHS(hiredate,6))
"Revision 6 meses“
FROM emp
WHERE hiredate NOT LIKE ‘%11’
ORDER BY hiredate;
18
CONSULTA 96. PRODUCTO CARTESIANO
SELECT ename, dname
FROM emp, dept;
ENAME DNAME
----------- ------------
KING ACCOUNTING
BLAKE ACCOUNTING
CLARK ACCOUNTING
JONES ACCOUNTING
MARTIN ACCOUNTING
ALLEN ACCOUNTING
TURNER ACCOUNTING
JAMES ACCOUNTING
WARD ACCOUNTING
…
19
56 filas seleccionadas.
CONSULTA 97. REUNIÓN NATURAL
SELECT emp.empno, emp.ename, emp.deptno, dept.deptno, dept.loc
FROM emp, dept
WHERE emp.deptno = dept.deptno;
20
14 rows selected.
CONSULTA 98
21
CONSULTA 99
SELECT e.empno, e.ename, e.deptno, d.deptno, d.loc
FROM emp e, dept d
WHERE e.deptno = d.deptno;
EMPNO ENAME DEPTNO DEPTNO LOC
---------- ----------- ---------- ---------- -----------
7839 KING 10 10 NEW_YORK
7698 BLAKE 30 30 CHICAGO
7782 CLARK 10 10 NEW_YORK
7566 JONES 20 20 DALLAS
7654 MARTIN 30 30 CHICAGO
7499 ALLEN 30 30 CHICAGO
7844 TURNER 30 30 CHICAGO
7900 JAMES 30 30 CHICAGO
7521 WARD 30 30 CHICAGO
7902 FORD 20 20 DALLAS
7369 SMITH 20 20 DALLAS
7788 SCOTT 20 20 DALLAS
7876 ADAMS 20 20 DALLAS
7934 MILLER 10 10 NEW_YORK
22
14 rows selected.
MODELO DE DATOS
customer ord product
custid ordid prodid
name orderdate descrip
address commplan
city custid
state shipdate
zip total price
area prodid
phone stdprice
repid item minprice
creditlimit ordid startdate
comments itemid enddate
prodid
actualprice
qty
itemtot 23
CONSULTA 100
24
CONSULTA.101. OUTER JOIN
25
14 filas seleccionadas.
CONSULTA.102. NATURAL JOIN
SELECT e.ename, d.deptno,d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno
ORDER BY e.deptno;
26
14 filas seleccionadas.
CONSULTA.103. SELF JOIN
SELECT workers.ename|| ' works for ' || manager.ename
FROM emp workers, emp manager
WHERE workers.mgr = manager.empno;
WORKERS.ENAME||'WORKSFOR'||MANAGE
---------------------------------
JONES works for KING
CLARK works for KING
BLAKE works for KING
…
SMITH works for FORD
ADAMS works for SCOTT
13 filas seleccionadas.
27
CONSULTA.104
SELECT AVG(sal),MAX(sal),MIN(sal),SUM(sal)
FROM emp
WHERE job LIKE 'SALES%';
28
CONSULTA.105
MIN(HIRE MAX(HIRE
-------- --------
17/12/10 12/01/13
29
CONSULTA.106
SELECT COUNT(*)
FROM emp
WHERE deptno = 30;
COUNT(*)
----------
6
30
CONSULTA.107
SELECT COUNT(comm)
FROM emp
WHERE deptno=30;
COUNT(COMM)
-----------
4
31
CONSULTA.108
SELECT COUNT(deptno)
FROM emp;
COUNT(DEPTNO)
-------------
14
32
CONSULTA.109
SELECT COUNT(DISTINCT(deptno))
FROM emp;
COUNT(DISTINCT(DEPTNO))
-----------------------
3
33
CONSULTA.110
SELECT AVG(comm)
FROM emp;
AVG(COMM)
----------
550
34
CONSULTA.111
SELECT AVG(NVL(comm,0))
FROM emp;
AVG(NVL(COMM,0))
----------------
157.142857
35
CONSULTA.112
DEPTNO AVG(SAL)
---------- ----------
30 1566.66667
20 2175
10 2916.66667
36
CONSULTA.113
SELECT AVG(sal)
FROM emp
GROUP BY deptno;
AVG(SAL)
----------
1566.66667
2175
2916.66667
37
CONSULTA.114
DEPTNO AVG(SAL)
---------- ----------
30 1566.66667
20 2175
10 2916.66667
38
CONSULTA.115
SELECT deptno, job, sum(sal)
FROM emp
GROUP BY deptno, job;
9 filas seleccionadas.
CONSULTA.116
SELECT deptno, COUNT(ename)
FROM emp
GROUP BY deptno;
DEPTNO COUNT(ENAME)
---------- ------------
30 6
20 5
10 3
40
CONSULTA.117
DEPTNO AVG(SAL)
---------- ----------
20 2175
10 2916.66667
41
CONSULTA.118
SELECT deptno, MAX(sal)
FROM emp
GROUP BY deptno
HAVING MAX(sal)>2900;
DEPTNO MAX(SAL)
---------- ----------
20 3000
10 5000
42
CONSULTA.119
44
CONSULTA.121. SUBCONSULTA
SELECT ename
FROM emp
WHERE sal = (SELECT sal
FROM emp
WHERE empno=7566);
ENAME
-----------
JONES
45