M2 - Bases de dades / Exercicis UF2: Llenguatges SQL / Solucions T3

De wikiserver
Dreceres ràpides: navegació, cerca

1. Fes una consulta que mostri la data actual. Etiqueta la columna com a Date.

SELECT sysdate "Date"
FROM dual;    

2. Mostra el número de l'empleat, nom, salari i increment del salari del 15% sense decimals. Etiqueta la columna com a New Salary. Guarda la sentència SQL en un fitxer anomenat p3q2.sql.

SELECT empno, ename, sal, ROUND(sal*1.15, 0) "New Salary"
FROM emp;

SAVE p3q2.sql    

3. Executa la consulta del fitxer p3q2.sql.

START p3q2.sql   

4. Modifica la consulta p3q2.sql per afegir una columna que resti el antic salari del nou. Etiqueteu la columna com Increase. Torna a executar la consulta.

EDIT p3q2.sql

SELECT empno, ename, sal, ROUND(sal*1.15, 0) "New Salary", ROUND(sal*1.15, 0) - sal "Increase"
FROM emp;
/   

5. Mostra el nom de l'empleat, data de contractació i data de revisió del salari, la cual és el primer Dilluns desprès de sis mesos de servei. Etiqueu la columna com REVIEW. Formata les dates per a que apareixin similars a "Sunday, the Seventh of September, 1981".

SELECT empno, hiredate, TO_CHAR(NEXT_DAY(ADD_MONTHS(hiredate, 6),'LUNES'),'fmDay, "the" Ddspth "of" Month, YYYY') REVIEW
FROM emp;  

6. Per a cada empleat mostra el nom de l'empleat i calcula el nombre de mesos entre avui i la data de contractació. Etiqueta la consulta com MONTHS_WORKED. Ordena els resultats per el nombre de mesos treballats. Arrodoneix el nombre de mesos cap amunt fins al proper nombre enter.

SELECT ename, ROUND(MONTHS_BETWEEN(SYSDATE, hiredate)) MONTHS_WORKED
FROM emp
ORDER BY MONTHS_BETWEEN(SYSDATE, hiredate);

7. Escriu una consulta que mostri la següent informació de cada empleat: <nom empleat> earns <salari> monthly but wants <3 vegades més>. Etiqueta la columna com Dream Salaries.

SELECT ename || ' earns ' || TO_CHAR(sal, 'fm$99,999.00') || ' monthly but wants ' || TO_CHAR(sal * 3, 'fm$99,999.00')
             || '.' "Dream Salaries"
FROM emp; 

8. Fes una consulta per mostrar el nom i salari de tots els empleats. Formata el salari per a que tingui una longitud de 15 caràcters i ompli el costat esquerra amb $. Etiqueta la columna com SALARY.

SELECT ename, LPAD(sal, 15, '$') SALARY
FROM emp;

9. Escriu una consulta que visualitzi el nom de l'empleat amb la primera lletra en majúscules, la resta en minúscules i la longitud dels seus noms, para tots els empleats que comencin per J, A o M. Doneu a les columnes una etiqueta apropiada.

SELECT INITCAP(ename) "Name", LENGTH(ename) "Length"
FROM emp
WHERE ename LIKE 'J%' OR ename LIKE 'M%' OR ename LIKE 'A%';

10. Mostra el nom, la data de contractació i dia de la setmana que va començar l'empleat. Etiqueta la columna com DAY. Ordena els resultats per el dia de la setmana començant per Dilluns.

SELECT ename, hiredate, TO_CHAR(hiredate, 'DAY') DAY
FROM emp
ORDER BY TO_CHAR(hiredate,'d');

11. Fes una consulta que mostri el nom de l'empleat i importi de la comissió. Si el empleat no té comissió mostreu el literal "No Commission". Etiqueta la columna com COMM.

SELECT ename, NVL(TO_CHAR(comm), 'No Comission') COMM
FROM emp;