FUNCIONES DE CADENA (STRING FUNCTIONS)
Función LENGTH
1. Obtener por orden alfabético los nombres de empleados que tengan al menos 13 letras.
Función SUBSTR
1. Obtener nombres abreviados para los departamentos tomando sus *primeras nueve letras*, por orden alfabético.
2. Obtener los números de departamento, y los cinco caracteres siguientes al de la *posición duodécima* de sus nombres, mostrándolos por orden de número de departamento.
3. Obtener los números de departamentos, y para los nombres de estos con *más de 12 caracteres*, extraer los cinco siguientes, mostrándolos por orden de número de departamento.
4. Obtener los tres *últimos caracteres* de los nombres de departamento por orden alfabético.
Ejercicios Propuestos de Cadenas
1. Hallar los nombres de los empleados que *no tienen comisión*, clasificados de manera que aparezcan primero aquellos cuyos nombres son *más cortos*.
2. Hallar, por orden alfabético, los nombres de empleados suprimiendo las *tres últimas letras* de los nombres de pila, para los empleados cuyos nombres de pila tengan *más de 6 letras*.
UTILIZACIÓN DE FECHAS Y HORAS
Manipulación de Datos de Tiempo
- 5.1.1. Se desea modificar la fecha de ingreso de *Valeriana Mora* (empleado número 430) poniendo el *3 de mayo de 1988*.
- 5.1.2. Se desea saber el nombre y fecha de nacimiento del *empleado 110*.
- 5.1.3. Extraer de la tabla de empleados los nombres de los que han ingresado *posteriormente al año 1970*.
- 5.1.4. Modificar la fecha de ingreso de *Valeriana Mora* (empleado número 430) poniendo la del *día de hoy*.
- 5.1.5. Se desea saber el nombre y fecha de nacimiento del *empleado 110*. (Repetido)
- 5.1.6. Obtener los nombres y fechas de nacimiento de los empleados del *departamento 100*, en formato *aa-mm-dd*, de *más viejo a más joven*.
Función DAYS
1. Para los empleados que ingresaron durante el año *1988*, *después del mes de mayo*, hallar su nombre y cuántos días llevaban trabajando en la empresa a *primeros de año de 1989*, por orden alfabético.
Función DATE
1. Obtener por orden alfabético los nombres de los empleados que ingresaron en los *primeros noventa días del año 1988*.
Expresiones con Valores de Tiempo
1. Obtener, por orden alfabético, los nombres y fechas de nacimiento de los empleados que cumplen años en el mes de *noviembre*.
2. Obtener, por orden alfabético, los nombres de los empleados que cumplen años en el *día de hoy*.
3. Obtener, por orden alfabético, los nombres de los empleados que cumplen *20 años de trabajo* en la empresa en el *año actual*.
4. Obtener, por orden alfabético, los empleados que en el *día de hoy* tienen *20 años cumplidos* en la empresa.
Ejercicios Propuestos de Fechas
1. Obtener los nombres y sueldos de los empleados que hayan empezado a trabajar en la empresa el *año 88 o después*, por orden alfabético.
2. Obtener, por orden alfabético, los nombres de los empleados que empezaron a trabajar en la empresa en el *año 1966*.
3. Obtener, por orden alfabético, los nombres de los empleados que han ingresado el *1.1.88 o en el día de hoy*.
4. Obtener, por orden alfabético, los nombres y salarios de los empleados que o bien ingresaron *después del 1.1.88* o bien *antes* y además tienen un salario *inferior al salario más bajo* de los que ingresaron con posterioridad al 1.1.88 incrementado en un *100%*.
5. Supongamos que según el convenio laboral de la empresa, para los empleados con *más de un año de servicio*, el número de días de vacaciones anuales (en días laborables) es de *20*, incrementados en uno más por cada *tres años de servicio cumplidos* en el año anterior. Para los empleados que este año cumplen *45 o más años de edad* y tienen *más de un año de servicio*, hallar por orden alfabético el nombre y el número de días laborables de vacaciones anuales que corresponde a cada uno.
6. Se desea analizar un plan de *jubilación anticipada* para los empleados con *60 años cumplidos* en el que se ofrece una paga adicional extra de jubilación equivalente al salario actual de un mes por cada año de servicio cumplido. Hallar una lista, por orden alfabético, de los empleados que este año cumplen *60 años o más*, indicando para cada uno la *cuantía de esta paga extra*.
7. Para los empleados de los *departamentos 111 y 112* hallar por orden alfabético: nombre, *edad en años cumplidos* en la fecha del día de hoy y *edad que tenían cuando ingresaron* en la empresa.
8. Para los empleados de los *departamentos 110 y 111*, hallar por orden alfabético, nombre y *tiempo que llevan en la empresa* en el día de hoy expresado en *años, meses y días*.
9. Hallar para los empleados de los *departamentos 110 y 112* su nombre y el *mes y día de su cumpleaños*, por orden creciente de estos.
10. *Azucena Muñoz* recibió un préstamo para vivienda el día en que ingresó en la empresa con vencimientos anuales a los *180 días* del día y mes de su ingreso. Hallar la *fecha en que vence la anualidad del préstamo* correspondiente al año actual.
11. Todos los empleados tienen un periodo de *6 meses después de su ingreso* antes de firmar su contrato de empleo definitivo. Hallar para los empleados que este año cumplen *menos de 40 años de edad*, por orden alfabético: nombre y *fecha de firma de su contrato definitivo*.
12. *Claudia Fierro* y *Horacio Torres* han decidido unirse en matrimonio. La boda se celebrará *dentro de 2 días*, y tomarán *20 días de vacaciones* para el viaje de novios. La empresa le entregará a cada uno como regalo de boda un *1% de su salario actual por cada año de servicio*. Hallar: la *fecha de la boda*, la *fecha en que se incorporarán al trabajo* después del viaje de novios y el *regalo de boda* correspondiente a cada uno de ellos.
FUNCIONES DE COLUMNAS (AGREGACIÓN BÁSICA)
- 6.1. Hallar el *salario medio*, el *mínimo*, el *máximo* y la *media aritmética* de estos para el colectivo formado por *todos los empleados*.
- 6.2. Hallar los mismos valores que en la consulta anterior pero sólo para los empleados del *departamento 100*.
- 6.3. Obtener por orden alfabético los salarios y nombres de los empleados cuyo salario se diferencia con el *máximo en menos de un 40%* de este.
- 6.4. Hallar la *edad en años cumplidos* del empleado *más viejo* del *departamento 110*.
- 6.5. Hallar el *número de empleados* de la empresa.
- 6.6. Hallar el número de empleados y de *extensiones telefónicas* del *departamento 112*.
- 6.7. Hallar cuántos empleados hay cuya *fecha de nacimiento sea anterior al año 1929*.
- 6.8. Hallar el número de empleados del *departamento 112*, así como cuántas *comisiones* hay y la *suma y media* de sus comisiones.
- 6.9. Hallar cuántas *comisiones diferentes* hay y su *valor medio*.
- 6.10. Hallar la *edad media en años* de los empleados del *departamento 100*.
- 6.11. Hallar la *media del número de hijos* de los empleados del *departamento 123*.
- 6.12. Hallar cuántos *departamentos* hay y el *presupuesto anual medio* de ellos.
- 6.13. Hallar cuántos departamentos hay y el *presupuesto anual medio* de ellos para los departamentos que *no tienen director en propiedad*.
- 6.14. Para los *departamentos 111 y 112*, hallar la *media de los años de servicio* de sus empleados en el *día de hoy*.
- 6.15. Para los *departamentos 111 y 112*, hallar la *media de los años de servicio* de sus empleados del día *31.12.86*.
- 6.16. Hallar por orden de número de empleado el nombre y *salario total* (salario más comisión) de los empleados cuyo salario total supera al *salario mínimo en 300.000 € mensuales*.
- 6.17. Para los empleados que han ingresado en la empresa en los *últimos 5 años*, hallar la *edad media en años cumplidos* a la que han ingresado.
- 6.18. Hallar la *masa salarial anual* (salario más comisión) de la empresa (se suponen *14 pagas anuales*).
- 6.19. Hallar cuántos empleados han ingresado en el *año actual*.
- 6.20. Hallar el *salario medio* de los empleados cuyo salario *no supera en más del 20 %* al salario mínimo de los empleados que tienen algún hijo y su salario medio por hijo es *mayor que 100.000 €*.
- 6.21. Hallar la *diferencia* entre el salario más alto y el más bajo.
- 6.22. Hallar la *edad media en años cumplidos* en el día de hoy de los empleados que tienen *más de 2 hijos*.
- 6.23. Hallar el *presupuesto medio* de los departamentos cuyo presupuesto *supera al presupuesto medio* de los departamentos.
- 6.24. Hallar el *número de hijos por empleado* para todos los empleados que *no tienen más de dos hijos*.
- 6.25. Obtener, por orden alfabético, los nombres y salarios de los empleados que o bien ingresaron *después del 1.1.88* o bien *antes* y además tienen un salario *inferior al salario más bajo* de los que ingresaron con posterioridad al 1.1.88 incrementado en un *100%*.
CONSULTAS CON AGRUPAMIENTO DE FILAS
Cláusula GROUP BY
1. Hallar para *cada departamento* el *salario medio*, el *mínimo*, el *máximo* y la *media aritmética* de estos.
2. Hallar por departamentos la *edad en años cumplidos* del empleado *más viejo* del departamento que *tiene comisión*. Ordenar el resultado por edades.
3. Agrupando por *departamento* y *número de hijos*, hallar *cuántos empleados hay* en cada grupo.
Cláusula HAVING
1. Hallar el *salario máximo* y el *mínimo* para cada grupo de empleados con *igual número de hijos* y que tienen *al menos uno*, y solo si hay *más de un empleado* en el grupo y el *salario máximo* de este excede a *200.000 €*.
2. Hallar el *salario medio por departamento* para aquellos departamentos cuyo *salario máximo es inferior* al *salario medio de todos los empleados*.
Ejercicios Propuestos con Agrupamiento
1. Hallar el *salario medio* y la *edad media en años* para cada grupo de empleados con *igual comisión* y para los que *no la tengan*.
2. Para los departamentos en los que *algún empleado tenga un salario mayor que 400.000 € al mes*, hallar el *número de empleados*, la *suma de sus salarios*, *comisiones* y *número de hijos*.
3. Para los departamentos en los que la *antigüedad media* de sus empleados *superaba a la de la empresa*, hallar el *salario mínimo*, el *medio* y el *máximo*.
4. Para cada departamento, hallar la *media de la comisión* con respecto a los empleados que la reciben y con respecto al *total de empleados*.
5. Para cada *extensión telefónica*, hallar *cuántos empleados la usan* y el *salario medio* de estos.
6. Para cada *extensión telefónica* y cada *departamento* hallar *cuántos empleados la usan* y el *salario medio* de estos.
7. Hallar los *números de extensión telefónica mayores* de los diversos departamentos, *sin incluir los números de estos*.
8. Para cada *extensión telefónica*, hallar el *número de departamento* a los que sirve.
9. Para los departamentos en los que *algún empleado tiene comisión*; hallar cuántos empleados hay en *promedio por cada extensión telefónica*.
10. Para los departamentos en los que *algún empleado tiene comisión*, hallar cuántos *empleados con comisión* hay en *promedio por cada extensión telefónica*.
11. Obtener por orden creciente los *números de extensiones telefónicas* de los departamentos que tienen *más de dos* y que son *compartidas por menos de 4 empleados*, *excluyendo las que no son compartidas*.
12. Para los departamentos cuyo *salario medio supera al de la empresa*, hallar *cuántas extensiones telefónicas tienen*.
13. Para cada *centro*, hallar los *presupuestos medios* de los departamentos *dirigidos en propiedad* y en *funciones*, excluyendo del resultado el número del centro.
14. Hallar el *máximo valor de la suma de los salarios* de los departamentos.
Etiquetas: Funciones de Cadena, Funciones de Fecha, GROUP BY, HAVING, SQL
Deja un comentario