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
 
(Hi ha 8 revisions intermèdies del mateix usuari que no es mostren)
Línia 28: Línia 28:
 
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ó.
  
 +
<pre>
 +
SELECT e.ename, d.dname, d.loc
 +
FROM emp e NATURAL JOIN dept d
 +
WHERE e.comm IS NOT NULL;
 +
</pre>
 +
<!--
 
<pre>
 
<pre>
 
SELECT e.ename, d.dname, d.loc
 
SELECT e.ename, d.dname, d.loc
Línia 33: Línia 39:
 
WHERE e.deptno = d.deptno AND e.comm IS NOT NULL;
 
WHERE e.deptno = d.deptno AND e.comm IS NOT NULL;
 
</pre>
 
</pre>
 +
-->
 
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.
 
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.
  
 +
<pre>
 +
SELECT e.ename, d.dname
 +
FROM emp e NATURAL JOIN dept d
 +
WHERE e.ename LIKE '%A%;
 +
</pre>
 +
<!--
 
<pre>
 
<pre>
 
SELECT e.ename, d.dname
 
SELECT e.ename, d.dname
Línia 40: Línia 53:
 
WHERE e.deptno = d.deptno AND e.ename LIKE '%A%';
 
WHERE e.deptno = d.deptno AND e.ename LIKE '%A%';
 
</pre>
 
</pre>
 
+
-->
 
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.
 
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.
  
 +
<pre>
 +
SELECT e.ename, e.job, deptno, d.dname
 +
FROM emp e JOIN dept d USING(deptno)
 +
WHERE upper(d.loc) = 'DALLAS';
 +
</pre>
 +
<!--
 
<pre>
 
<pre>
 
SELECT e.ename, e.job, e.deptno, d.dname
 
SELECT e.ename, e.job, e.deptno, d.dname
Línia 48: Línia 67:
 
WHERE e.deptno = d.deptno AND upper(d.loc) = 'DALLAS';
 
WHERE e.deptno = d.deptno AND upper(d.loc) = 'DALLAS';
 
</pre>
 
</pre>
 +
-->
 
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.
 
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.
  
 +
<pre>
 +
SELECT e.ename "Employee", e.empno "Emp#", j.ename "Manager", j.empno "Mgr#"
 +
FROM emp e JOIN emp j ON e.mgr = j.empno;
 +
</pre>
 +
<!--
 
<pre>
 
<pre>
 
SELECT e.ename "Employee", e.empno "Emp#", j.ename "Manager", j.empno "Mgr#"
 
SELECT e.ename "Employee", e.empno "Emp#", j.ename "Manager", j.empno "Mgr#"
Línia 55: Línia 80:
 
WHERE e.mgr = j.empno;
 
WHERE e.mgr = j.empno;
 
</pre>
 
</pre>
 +
-->
 
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.
 
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.
  
 +
<pre>
 +
SELECT e.ename "Employee", e.empno "Emp#", j.ename "Manager", j.empno "Mgr#"
 +
FROM emp e LEFT OUTER JOIN emp j ON e.mgr = j.empno;
 +
</pre>
 +
<!--
 
<pre>
 
<pre>
 
SELECT e.ename "Employee", e.empno "Emp#", j.ename "Manager", j.empno "Mgr#"
 
SELECT e.ename "Employee", e.empno "Emp#", j.ename "Manager", j.empno "Mgr#"
Línia 62: Línia 93:
 
WHERE e.mgr = j.empno (+);
 
WHERE e.mgr = j.empno (+);
 
</pre>
 
</pre>
 +
-->
 
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.
 
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.
  
 +
<pre>
 +
SELECT e.deptno DEPARTAMENT, e.ename EMPLOYEE, c.ename COLLEAGUE
 +
FROM emp e JOIN emp c ON e.deptno = c.deptno
 +
WHERE e.empno <> c.empno;
 +
</pre>
 +
<!--
 
<pre>
 
<pre>
 
SELECT e.deptno DEPARTAMENT, e.ename EMPLOYEE, c.ename COLLEAGUE
 
SELECT e.deptno DEPARTAMENT, e.ename EMPLOYEE, c.ename COLLEAGUE
Línia 69: Línia 107:
 
WHERE e.deptno = c.deptno AND e.empno <> c.empno;
 
WHERE e.deptno = c.deptno AND e.empno <> c.empno;
 
</pre>
 
</pre>
 
+
-->
 
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.
 
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.
  
 +
<pre>
 +
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;
 +
</pre>
 +
<!--
 
<pre>
 
<pre>
 
SELECT e.ename, e.job, d.dname, e.sal, s.grade
 
SELECT e.ename, e.job, d.dname, e.sal, s.grade
Línia 77: Línia 121:
 
WHERE e.deptno = d.deptno AND e.sal BETWEEN s.losal AND s.hisal;
 
WHERE e.deptno = d.deptno AND e.sal BETWEEN s.losal AND s.hisal;
 
</pre>
 
</pre>
 +
-->
 
10. Fes una consulta per mostrar el nom i data de contractació de qualsevol empleat contractat desprès de Blake.
 
10. Fes una consulta per mostrar el nom i data de contractació de qualsevol empleat contractat desprès de Blake.
  
 +
<pre>
 +
SELECT e.ename, e.hiredate
 +
FROM emp e JOIN emp b ON  b.ename = 'BLAKE'
 +
WHERE e.hiredate > b.hiredate;
 +
</pre>
 +
<!--
 
<pre>
 
<pre>
 
SELECT e.ename, e.hiredate
 
SELECT e.ename, e.hiredate
Línia 84: Línia 135:
 
WHERE b.ename = 'BLAKE' AND e.hiredate > b.hiredate;
 
WHERE b.ename = 'BLAKE' AND e.hiredate > b.hiredate;
 
</pre>
 
</pre>
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.
+
-->
 +
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.
  
 +
<pre>
 +
SELECT e.ename "Employee", e.hiredate "Emp Hiredate", j.ename "Manager", j.hiredate "Mgr Hiredate"
 +
FROM emp e JOIN emp j ON e.mgr = j.empno
 +
WHERE e.hiredate < j.hiredate;
 +
</pre>
 +
<!--
 
<pre>
 
<pre>
 
SELECT e.ename "Employee", e.hiredate "Emp Hiredate", j.ename "Manager", j.hiredate "Mgr Hiredate"
 
SELECT e.ename "Employee", e.hiredate "Emp Hiredate", j.ename "Manager", j.hiredate "Mgr Hiredate"
Línia 91: Línia 150:
 
WHERE e.mgr = j.empno AND e.hiredate < j.hiredate;
 
WHERE e.mgr = j.empno AND e.hiredate < j.hiredate;
 
</pre>
 
</pre>
 +
-->
 
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.
 
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.
  

Revisió de 11:26, 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 NATURAL JOIN dept d
WHERE 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 NATURAL JOIN dept d
WHERE 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, deptno, d.dname
FROM emp e JOIN dept d USING(deptno)
WHERE 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 JOIN emp j ON 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 LEFT OUTER JOIN emp j ON 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 JOIN emp c ON e.deptno = c.deptno
WHERE 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 JOIN dept d ON  e.deptno = d.deptno 
     JOIN salgrade s ON  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 JOIN emp b ON  b.ename = 'BLAKE'
WHERE 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 JOIN emp j ON e.mgr = j.empno
WHERE 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;