Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF2: Llenguatges SQL / Solucions T4»

De wikiserver
Dreceres ràpides: navegació, cerca
Línia 14: Línia 14:
 
2. Mostra els oficis diferents que hi ha al departament 30.
 
2. Mostra els oficis diferents que hi ha al departament 30.
  
 +
<pre>
 +
SELECT distinct e.job, d.loc
 +
FROM emp e NATURAL JOIN dept d
 +
WHERE deptno=30;
 +
</pre>
 +
<!--
 
<pre>
 
<pre>
 
SELECT distinct e.job, d.loc
 
SELECT distinct e.job, d.loc
Línia 19: Línia 25:
 
WHERE e.deptno = d.deptno AND d.deptno=30;
 
WHERE e.deptno = d.deptno AND d.deptno=30;
 
</pre>
 
</pre>
 +
-->
 
3. Fes una consulta per mostrar el nom de l'empleat, nom del departament i localitat de tots els empleats que tenen comissió.
 
3. Fes una consulta per mostrar el nom de l'empleat, nom del departament i localitat de tots els empleats que tenen comissió.
  

Revisió del 11:04, 16 nov 2022

1. Fes una consulta per mostrar el nom, número de departament i nom de departament de tots els empleats.

SELECT ename, deptno, dname
FROM emp NATURAL JOIN dept;

2. Mostra els oficis diferents que hi ha al departament 30.

SELECT distinct e.job, d.loc
FROM emp e NATURAL JOIN dept d
WHERE deptno=30;

3. Fes una consulta per mostrar el nom de l'empleat, nom del departament i localitat de tots els empleats que tenen comissió.

SELECT e.ename, d.dname, d.loc
FROM emp e, dept d
WHERE e.deptno = d.deptno AND e.comm IS NOT NULL;

4. Mostra el nom de l'empleat i nom del departament de tots els empleats que tenen una A en el seu nom. Guarda la sentència SQL en un fitxer anomenat p4q4.sql.

SELECT e.ename, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno AND e.ename LIKE '%A%';

5. Fes una consulta per mostrar el nom, ofici, número del departament i nom del departament de tots els empleats que treballen a DALLAS.

SELECT e.ename, e.job, e.deptno, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno AND upper(d.loc) = 'DALLAS';

6. Mostra el nom de l'empleat i el número del empleat juntament amb el nom dels seus caps i el número del seu cap. Etiqueta les columnes com Employee, Emp#, Manager i Mgr#, respectivament. Guarda la sentència SQL en un fitxer anomenat p4q6.sql.

SELECT e.ename "Employee", e.empno "Emp#", j.ename "Manager", j.empno "Mgr#"
FROM emp e, emp j
WHERE e.mgr = j.empno;

7. Modifica p4q6.sql per mostrar tots els empleats incloent a King, que no té cap. Torna a guardar la consulta com p4q7.sql. Executa la consulta.

SELECT e.ename "Employee", e.empno "Emp#", j.ename "Manager", j.empno "Mgr#"
FROM emp e, emp j
WHERE e.mgr = j.empno (+);

8. Fes una consulta que mostri el nom de l'empleat, número del departament juntament amb el nom dels seus companys de departament. Poseu etiquetes apropiades.

SELECT e.deptno DEPARTAMENT, e.ename EMPLOYEE, c.ename COLLEAGUE
FROM emp e, emp c
WHERE e.deptno = c.deptno AND e.empno <> c.empno;

9. Mostra l'estructura de la taula SALGRADE. Crea una consulta que mostri el nom, ofici, nom del departament, salari i grau de tots els empleats.

SELECT e.ename, e.job, d.dname, e.sal, s.grade
FROM emp e, dept d, salgrade s
WHERE e.deptno = d.deptno AND e.sal BETWEEN s.losal AND s.hisal;

10. Fes una consulta per mostrar el nom i data de contractació de qualsevol empleat contractat desprès de Blake.

SELECT e.ename, e.hiredate
FROM emp e, emp b
WHERE b.ename = 'BLAKE' AND e.hiredate > b.hiredate;

11. Mostra tots els noms dels empleats i les dates de contractació juntament amb el nom dels seus caps i dates de contractació de tots els empleats contractats abans que els seus caps. Etiquet les columnes com Employee. Emp Hiredate, Manager i Mgr respectivament.

SELECT e.ename "Employee", e.hiredate "Emp Hiredate", j.ename "Manager", j.hiredate "Mgr Hiredate"
FROM emp e, emp j
WHERE e.mgr = j.empno AND e.hiredate < j.hiredate;

12. Fes una consulta que mostri els noms dels empleats i el salari mitjançant asteriscs. Cada asterisc significa un centenar de dòlars. Ordena les dades en ordre descendent per salari. Mostra el resultat en una sola columna, amb l'etiqueta EMPLOYEE_AND_THEIR_SALARIES.

SELECT rpad(ename,10,' ') || LPAD(' ',trunc (sal / 100) + 1,'*') EMPLOYEE_AND_THEIR_SALARIS
FROM emp
ORDER BY sal DESC;