Databases
T01-007-01 Funciones aritméticas
Enunciado
Las funciones
FLOORyCEILson muy parecidos:
FLOOR(número): Devuelve el valor entero inmediatamente inferior o igual a n.CEIL(número): Devuelve el valor entero inmediatamente superior o igual a n.Ejemplo:
Imaginemos que el sueldo que aparece en el atributo
SALARYde la tabla employees corresponde al salario anual de 12 pagas. Vamos a mostrar el salario mensual de los empleados cuyo trabajo comienza porAD, de manera que eliminemos los decimales y con truncamientos, tanto al alza como a la baja:
SELECT FIRST_NAME, LAST_NAME,
JOB_ID, SALARY / 12 AS "SALARIO MENSUAL",
FLOOR(SALARY / 12) AS "SALARIO MENSUAL SIN DECIMALES REDONDEADO A LA BAJA",
CEIL(SALARY / 12) AS "SALARIO MENSUAL SIN DECIMALES REDONDEADO AL ALZA"
FROM HR.employees
WHERE JOB_ID LIKE 'AD%'
FIRST_NAME LAST_NAME JOB_ID SALARIO MENSUAL SALARIO MENSUAL SIN DECIMALES REDONDEADO A LA BAJA SALARIO MENSUAL SIN DECIMALES REDONDEADO AL ALZA Jennifer Whalen AD_ASST 366.666666666666666666666666666666666667 366 367 Steven King AD_PRES 2000 2000 2000 Neena Kochhar AD_VP 1416.666666666666666666666666666666666667 1416 1417 Lex De Haan AD_VP 1416.666666666666666666666666666666666667 1416 1417 Nos debemos fijar en que ni
FLOORniCEILafectan a los valores que no tienen decimales.Ejercicio:
Muestra el nombre, apellidos, salario mensual y ese salario mensual al que se le han aplicado las comisiones y se le han eliminado los decimales a la baja.
Haz que se muestren únicamente aquellos registros en los que la comisión (
COMMISSION_PCT) no es nula.Finalmente, ordena el resultado, en primer lugar, descendentemente por el sueldo más las comisiones y, en caso de que ese resultado sea el mismo, alfabéticamente por el apellido
Tipo
Solución
SELECT FIRST_NAME, LAST_NAME, SALARY / 12 AS "SALARIO MENSUAL", FLOOR((SALARY / 12) * (1 + COMMISSION_PCT)) AS "SUELDO + COMISIONES"
FROM HR.employees
WHERE COMMISSION_PCT IS NOT NULL
ORDER BY "SUELDO + COMISIONES" DESC, LAST_NAME
Prueba
LibrerÃas (Onfly databases)

