SQL - Funciones
Enviado por RafaLR06 • 24 de Abril de 2017 • Práctica o problema • 1.008 Palabras (5 Páginas) • 287 Visitas
1. Calcule la parte entera de la media del saldo de todas las cuentas.
SELECT FLOOR(AVG(saldo)) FROM cuenta;
2. Haga lo mismo que en el anterior ejercicio, pero obteniendo el superior. Muéstrelo también, pero redondeando hacia abajo.
SELECT CEIL(AVG(saldo)) FROM cuenta;
3. Mostrar nombre, apellidos, número de cuenta, saldo y dirección de sucursal de aquellos clientes cuyo saldo en cuenta sea superior a la media de la cuenta. Redondee el saldo de las cuentas a un decimal.
SELECT cliente.nombre, cliente.apellidos, cuenta.cod_cuenta, cuenta.saldo, sucursal.direccion FROM cliente, cuenta, sucursal WHERE cliente.cod_cliente = cuenta.cod_cliente AND cuenta.cod_sucursal = sucursal.cod_sucursal GROUP BY cliente.nombre, cliente.apellidos, cuenta.cod_cuenta, cuenta.saldo, sucursal.direccion HAVING cuenta.saldo > (SELECT AVG(saldo) FROM cuenta);
4. Realice una consulta en la que muestre el porcentaje de la última extracción de cada cuenta con respecto a saldo que hay en cuenta. Trunque el resultado con dos decimales. Trate de evitar valores nulos usando una función que permita evitarlos. (Difícil) -→ PARECIDO
SELECT movimiento.cod_cuenta, fecha_hora, ROUND((importe/saldo)*100,2) AS porcentaje FROM cuenta, movimiento WHERE cuenta.cod_cuenta = movimiento.cod_cuenta AND fecha_hora >= (SELECT MAX(fecha_hora) FROM movimiento, tipo_movimiento WHERE tipo_movimiento.cod_tipo_movimiento = movimiento.cod_tipo_movimiento AND salida = 'Si');
5. Para cada cuenta, calcule las salidas y entradas de dinero y el cálculo total. Diga el signo de esta operación. (Difícil)
6. Obtén la varianza de saldo de todas las cuentas.
SELECT VARIANCE(saldo) FROM cuenta;
7. Calcule la desviación típica de todas las cuentas.
SELECT SQRT(VARIANCE(saldo)) FROM cuenta;
8. Redondea y trunca a 2 y a -2 los resultados de varianza y desviación típica.
SELECT ROUND(SQRT(VARIANCE(saldo)),2), TRUNC(SQRT(VARIANCE(saldo)),-2) FROM cuenta;
9. Dando el identificador de cliente, muestre el mayor valor de cada fila pero sólo para la primera vez que aparezca como cliente.
SELECT cod_cliente, GREATEST(apellidos, nombre, direccion) FROM cliente;
10. Devuelva el nombre de cliente (nombre y apellidos concatenados con un espacio entre ellos), su número de cuenta, los movimientos realizados y el tipo de movimientos, durante el mes de enero de 2007.
SELECT CONCAT(CONCAT(nombre, ' '), apellidos) AS nombre, cuenta.cod_cuenta, num_mov_mes, cod_tipo_movimiento FROM cliente, cuenta, movimiento WHERE cliente.cod_cliente = cuenta.cod_cliente AND cuenta.cod_cuenta = movimiento.cod_cuenta AND TO_CHAR(fecha_hora, 'MON-yyyy') LIKE 'MAR-2007';
11. Realice lo mismo, pero dando el montante total de las operaciones realizadas, o sea, sume las entradas y reste las salidas. (Difícil)
SELECT CONCAT(CONCAT(nombre, ' '), apellidos) AS nombre, cuenta.cod_cuenta, num_mov_mes, tipo_movimiento.cod_tipo_movimiento FROM cliente, cuenta, movimiento, tipo_movimiento WHERE cliente.cod_cliente = cuenta.cod_cliente AND cuenta.cod_cuenta = movimiento.cod_cuenta AND movimiento.cod_tipo_movimiento = tipo_movimiento.cod_tipo_movimiento AND cuenta.saldo IN (SELECT SUM(saldo) FROM cuenta, movimiento, tipo_movimiento WHERE cuenta.cod_cuenta = movimiento.cod_cuenta AND movimiento.cod_tipo_movimiento = tipo_movimiento.cod_tipo_movimiento AND tipo_movimiento.salida = 'Si' AND - (SELECT SUM(saldo) FROM cuenta, movimiento, tipo_movimiento WHERE cuenta.cod_cuenta = movimiento.cod_cuenta AND movimiento.cod_tipo_movimiento = tipo_movimiento.cod_tipo_movimiento AND tipo_movimiento.salida = 'No')); -→ es así pero las subconsultas son en el select y sql no lo reconoce
12. Haga el ejercicio 9 con todas las letras convertidas a mayúsculas en primer lugar y, después, convertidas a minúsculas.
SELECT cod_cliente, UPPER(GREATEST(apellidos, nombre, direccion)), LOWER(GREATEST(apellidos, nombre, direccion)) FROM cliente;
13. Concatene la cadena "El apellido es: " al apellido pasado a mayúsculas del cliente que tenga la cuenta con mayor saldo.
SELECT UPPER(CONCAT('El apellido es: ', apellidos)) FROM cliente, cuenta WHERE cliente.cod_cliente = cuenta.cod_cliente AND cuenta.saldo = (SELECT MAX(cuenta.saldo) FROM cuenta);
...