Ejercicio 1 Funciones de SQL

Documentos relacionados
Ejercicio 1 Funciones de SQL

2. Calcula cuanto ganan en total cada uno de los grupos de empleados clasificados por tipo de trabajo (Job_id)

Agrupamiento de registros. Elaboración de claúsulas avanzadas de selección. 31/12/2011. Unidad 9

Nombre: 1. Selecciona todos los registros de la tabla EMPLOYEES. Anota el nº de filas obtenidas.

Unidad 7. CONSULTAS MULTITABLA

MANUAL BÁSICO DEL LENGUAJE SQL

ORACLE 10g. Descripción A QUIEN VA DIRIGIDO?

Usando los operadores SET (Conjunto)

Características del lenguaje SQL

LENGUAJE DE MANIPULACIÓN DE DATOS (DML) CONSULTA DE DATOS

INTRODUCCION A SQL CARACTERÍSTICAS DEL LENGUAJE ESTRUCTURADO DE CONSULTA SQL COMPONENTES DEL SQL

La forma básica de la instrucción SELECT consta de tres cláusulas SELECT, FROM y WHERE (donde)

Insertar Datos en Tablas

2. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS

UNIDAD I. ALGORITMOS

Escribiendo sentencias básicas de SQL

APÉNDICE D. INTRODUCCIÓN A SQL

SELECT listadecampos FROM nombredetablas WHERE condicionesdebúsqueda;

Tema 4: Dinámica del Modelo Relacional. El lenguaje SQL

2.4. Unidades de aprendizaje. Modelo Académico de Calidad para la Competitividad PSGB-02 15/22

Manual de Sentencias Básicas en SQL

Definición y Manipulación de Bases de Datos con SQL. 1. Muestra la estructura de la tabla dept. Muestra todos los datos de la tabla dept.

ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS Tipos de datos Expresiones Operadores y operandos Identificadores como localidades de memoria

Los DLL que permiten crear y definir nuevas bases de datos, campos e índices.

CAPITULO II. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS

Tema 1. Números naturales, operaciones y divisibilidad. El trabajo en equipo y el trabajo científico.

SQL (DML) Carlos A. Olarte Gestión y Modelación de SQL Datos (DML)

BASE DE DATOS ARTICULOS DE COMPUTACION.

Bases de Datos Ejercicios de SQL

SQL DML Select. Ges$ón y Modelación de Datos. María Constanza Pabón

Introducción. Definición. Definición 17/12/2011. Unidad 7 Elaboración de consultas básicas de selección.

Las soluciones de las consultas vistas en clase se encuentran en la página 5 en adelante.

RESUMEN SQL. Tipo de coincidencia Modelo Planteado Coincide No coincide. Varios caracteres 'ab*' 'abcdefg', 'abc' 'cab', 'aab'

Práctica 7. Ejercicios:

Oracle Database 12c SQL and PLSQL Fundamentals

Computación Web (Curso 2015/2016)

GUIA DE EJERCICIOS PARA RESOLVER: SQL

EJERCICIOS EXCEL. Guardar el libro en tu pen drive, con el nombre PRACTICA1_ALUMNO_GRUPO.

Manipulando Datos. y Transacciones

Está basado en el álgebra y en el cálculo relacional.

4.2 COMBINAR CORRESPONDENCIA UTILIZANDO OTROS ORÍ-

MANUAL DE USUARIO STIV CONSULTAS EXTERNAS

Oracle Database 11g: Conceptos Fundamentales de SQL y PL/SQL Nuevo

EJERCICIOS DE SQL. CONSULTAS MÁS COMPLEJAS (III)

SQL, Consultas. Son Importantes las Consultas? Cuál es el Resultado de SELECT? Andrés Moreno S.

ADMINISTRACION DE ORACLE 9i Guía de estudio (OCA) TEMA 1

SQL Básico. José Muñoz Jimeno Febrero 2015

Conceptos Avanzados de Programación en Internet

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN

Qué Tipos de Datos se Almacenan en OpenOffice.org Calc?

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION

Operaciones con bases de

Sistema de Citas Tag Manual de Usuarios Ciudadano

TEMA 2: TEORÍA DE CONJUNTOS Y CONJUNTOS NUMÉRICOS.

Transact-SQL. Declaraciones del Data Control Language (DCL) que se utilizan para determinar quién ve o modifica los datos.

1.- CREACIÓN DE CONSULTAS.

Capítulo 4. Realización de consultas

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos.

MATERIAL INTRODUCTORIO ORACLE 11G

Restricción y Clasificación de los Datos. Copyright Oracle Corporation, All rights reserved.

all : Permite la aparición de filas idénticas (valor por defecto). distinct: No permite la aparición de filas idénticas.

El sistema binario es una secuencia de números que contiene unos y ceros, así;

2. Obtener el valor absoluto del SALARIO para todas las filas de la tabla EMPLE

SQL SERVER SQL Server 2005 permite tres tipos de operaciones con conjuntos: UNION, disponible en todas las versiones de SQL Server.

SQL SERVER Curso Teórico-Práctico

Lenguaje de manipulación de datos

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION

Instituto Tecnológico de Altamira

GBD Diseño físico de DDBB

Oracle Database 10g: Conceptos Básicos de SQL y PL/SQL

Tema 7. Elaboración de consultas básicas de selección. Lenguajes de bases de datos. SQL básico 15/12/2011

El SQL es un lenguaje estándar de programación para el acceso a bases de datos.

Manual Aprendiendo Practicando Oracle SQL (Spanish Edition) Click here if your download doesn"t start automatically

UNION, INTERSECCION Y DIFERENCIA. SELECT TABLE Expresión con operador de reunión (SELECT * FROM PROFESOR) UNION (SELECT * FROM ESTUDIANTE)

FUNDAMENTOS ORACLE 12C

Introducción a SQL (DML)

Diseña y Administra Bases de Datos Guía de Estudio

GUÍA DE TRABAJO N 5 GRADO 11 Programación y Diseño de Articulación SENA Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6

Universidad Capitán General Gerardo Barrios. Facultad de Ciencia y Tecnología

Oracle Fundamentos. Programa de Estudio.

GUÍA DE TRABAJO N 7 GRADO 11. Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6 GUIA N 7 COMANDOS MYSQL II. CREAR UNA TABLA

Oracle Fundamentos. Programa de Estudio.

Oracle Fundamentos. Programa de Estudio.

SQL: Lenguaje de Interrogación Estructurado

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL)

SQL Server FEMEPA SQL Server 2000

PRESENTACION SQL SENTENCIAS SQL 5TO SEMESTRE DE INGENIERIA PROFESOR INGENIERO EDGAR SANDOVAL

El Lenguaje SQL. Funciones en SQL

UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN PREPARATORIA 8. Requisitos para presentar 4ª 5ª y/o 6ª oportunidad Del semestre Enero Junio 2016

Operadores. Además se pueden emplear en sentencias SET.

Introducción 1 Recuperación de Datos mediante la Sentencia SQL SELECT

Transcripción:

Ejercicio 1 Funciones de SQL 1. Mostrar el nombre, identificador del departamento y comisión de todos los empleados. Ordenarlos primero por el nombre de manera alfabéticamente descendente, seguido por la comisión de manera ascendente y registros nulos al inicio (SQL*Developer). SELECT first_name, department_id, commission_pct ORDER BY first_name DESC, commission_pct NULLS FIRST; 2. Seleccionar los nombres de los departamentos y el identificador del administrador. Ordenarlos primero por el identificador del administrador de manera descendente con los valores nulos al final, seguido por nombre de departamento alfabéticamente ascendente. Utilizar la posición de la columna para el primer ordenamiento y alias de la columna para el segundo ordenamiento. SELECT department_name depto, manager_id FROM departments ORDER BY 2 DESC NULLS LAST, depto; 3. Seleccionar el identificador del trabajo, el máximo, el mínimo, la suma y el promedio del salario de todos los empleados por cada identificador de trabajo.

SELECT job_id, MAX(salary) "MAXIMO", MIN(salary) "MINIMO", SUM(salary) "SUMA", AVG(salary) "PROMEDIO" GROUP BY job_id; 4. Seleccionar el identificador del administrador y el menor salario que es pagado por el administrador. Excluir aquellos grupos donde el salario mínimo es menor a 6000. Ordenar por salarios minimos de manera descendente. SELECT manager_id, MIN(salary) "MINIMO" GROUP BY manager_id HAVING MIN(salary) > 6000 ORDER BY MIN(salary) DESC; 5. Seleccionar los nombres de los empleados con la primera letra en mayúscula, los apellidos de los empleados en mayúsculas y los correos electrónicos en minúsculas. SELECT INITCAP(first_name) "NOMBRE", UPPER(last_name) "APELLIDO", LOWER(email) "EMAIL" ;

6. Seleccionar todas las direcciones disponibles agregando al inicio la siguiente cadena: DIRECCION:. SELECT CONCAT('DIRECCION: ',street_address) "DIRECCION" FROM locations; 7. Obtener los primeros 10 caracteres de todas las direcciones y mostrar la longitud original de cada dirección. SELECT SUBSTR(street_address,0,10) "10 CARACTERES", LENGTH(street_address) "LONGITUD" FROM locations; 8. Seleccionar el nombre de los empleados, la posición donde se encuentra la primera letra a en su nombre. Además seleccionar el nombre agregando el carácter * hasta cubrir 15 posiciones y seleccionando el nombre agregando el carácter! hasta cubrir 10 posiciones. SELECT first_name, INSTR(first_name,'a') "POSICION A", LPAD(first_name,15,'*') "IZQUIERDA *", RPAD(first_name,10,'!') "DERECHA!" ;

9. Seleccionar todas las direcciones, mostrar las direcciones eliminando el carácter 1 cuando aparezca al inicio de la dirección y mostrar las direcciones reemplazando el carácter 1 por 10 que aparezcan en la dirección. SELECT street_address "DIRECCION", TRIM(LEADING '1' FROM street_address) "ELIMINA 1 INICIO", REPLACE(street_address,'1','10') "REEMPLAZA" FROM locations; 10. Seleccionar la comisión de los empleados, mostrar el valor redondeado al segundo decimal, truncado al primer decimal, el número entero superior e inferior de la comisión. Así también mostrar el salario y residuo de la división del salario y la comisión. Ordenar por comisión de manera ascendente y mostrar los valores nulos al final. SELECT commission_pct, ROUND(commission_pct,2) "REDONDEO", TRUNC(commission_pct,1) "TRUNCADO", CEIL(commission_pct) "ENTERO SUP", FLOOR(commission_pct) "ENTERO INF", salary, MOD(salary,commission_pct) "MODULO" ORDER BY 1 NULLS LAST; 11. Mostrar la fecha actual de la sesión, así como la fecha y hora más precisa de la sesión. Además seleccionar la fecha de contratación de los empleados y los meses que han transcurrido desde su contratación al día actual. SELECT CURRENT_DATE "FECHA SESION", CURRENT_TIMESTAMP "FECHA PRECISA", hire_date, MONTHS_BETWEEN(SYSDATE,hire_date) "MESES" ;

12. Seleccionar la fecha de contratación de los empleados, la fecha del segundo mes que trabajaron, el siguiente día Lunes que trabajaron desde su fecha de contratación y el último día del mes que fueron contratados. SELECT hire_date, ADD_MONTHS(hire_date,2) "AGREGA MESES", NEXT_DAY(hire_date,'LUNES') "SIGUIENTE DIA", LAST_DAY(hire_date) "ULTIMO DIA" ; 13. Mostrar la fecha de contratación de los empleados, redondear la fecha de contratación tomando como referencia tanto el mes como el año. Así también truncar la fecha de contratación tomando como referencia tanto el mes como el año de contratación. SELECT hire_date, ROUND(hire_date,'MONTH') "REDONDEO MES", ROUND(hire_date,'YEAR') "REDONDEO AÑO", TRUNC(hire_date,'MONTH') "TRUNCADO MES", TRUNC(hire_date,'YEAR') "TRUNCADO AÑO" ; 14. Seleccionar el nombre de los empleados, la fecha de contratación mostrando el siguiente formato [DD][MM][YYYY]. Así también sus teléfonos y convertir a un formato numérico los tres primeros números del mismo.

SELECT first_name, TO_CHAR(hire_date,'[DD][MM][YYYY]') "FECHA", phone_number, TO_NUMBER(SUBSTR(phone_number,0,3),'999') "NUMERO" ; 15. Mostrar los nombres y comisión de los empleados. También indicar que la comisión es 0 cuando no tenga valor y la última sección debe mostrar la leyenda CON COMISION cuando el empleado tenga comisión, o la leyenda SIN COMISION cuando no haya valor. SELECT first_name, commission_pct, NVL(commission_pct,0) "COMISION 0", NVL2(commission_pct,'CON COMISION','SIN COMISION') "COMISION" ; 16. Seleccionar el apellido y correo electrónico de los empleados. Así también mostrar un valor nulo si la longitud del apellido y el correo son iguales. Mostrar la comisión y en caso de que la comisión sea nula indicar el valor 10 si no es nula multiplicar la comisión por 100. SELECT last_name, email, NULLIF(LENGTH(last_name),LENGTH(email)) "EQUIVALENTE", commission_pct, COALESCE(commission_pct*100,10) "COMISION" ;

17. Seleccionar el identificador y el apellido de los empleados de la tabla EMPLOYEES donde el identificador sea menor a 120. Unir los registros sin duplicar los resultados seleccionando el identificador y el apellido de los empleados de la tabla EMPLOYEES2 donde el identificador sea menor a 200. Ordenar la salida por identificador de manera ascendente. WHERE employee_id < 120 UNION 2 WHERE employee_id < 200 ORDER BY 1; 18. Seleccionar el identificador y el apellido de los empleados de la tabla EMPLOYEES donde el identificador sea menor a 120. Unir los registros, incluyendo los duplicados de la selección del identificador y del apellido de los empleados de la tabla EMPLOYEES2 donde el identificador sea menor a 200. Ordenar la salida por identificador de manera descendente. WHERE employee_id < 120 UNION ALL 2 WHERE employee_id < 200 ORDER BY 1 DESC;

19. Seleccionar el identificador y el apellido de los empleados de la tabla EMPLOYEES donde el identificador sea menor a 120. Mostrar los registros que hay en común con la selección del identificador y del apellido de los empleados de la tabla EMPLOYEES2 donde el identificador sea mayor a 100. Ordenar la salida por identificador de manera ascendente. WHERE employee_id < 120 INTERSECT 2 WHERE employee_id > 100 ORDER BY 1; 20. Seleccionar el identificador y el apellido de los empleados de la tabla EMPLOYEES donde el identificador sea menor a 150. Mostrar solo los registros de la primera selección que no estén en la proyección del identificador y del apellido de los empleados de la tabla EMPLOYEES2 donde el identificador sea menor a 140. Ordenar la salida por identificador de manera ascendente. WHERE employee_id < 150 MINUS 2 WHERE employee_id < 140 ORDER BY 1;

21. Seleccionar los nombres de los empleados, el identificador y el nombre del departamento al que pertenecen cada uno. Realizar la unión de las tablas con la sintaxis antigua para un JOIN. SELECT e.first_name, e.department_id, d.department_name e, departments d WHERE e.department_id = d.department_id; 22. Realizar la consulta anterior con la nueva sintaxis para un JOIN utilizando la cláusula ON. SELECT e.first_name, e.department_id, d.department_name e JOIN departments d ON (e.department_id = d.department_id); 23. Consultar los nombres de los empleados, el identificador su administrador, el identificador y nombre del departamento al que pertenece cada uno. Realizar la unión de las tablas con la sintaxis antigua para un JOIN.

SELECT e.first_name, e.manager_id, d.department_id, d.department_name e, departments d WHERE e.department_id = d.department_id AND e.manager_id = d.manager_id; 24. Realizar la consulta anterior con la nueva sintaxis para un JOIN utilizando la cláusula USING. SELECT first_name, manager_id, department_id, department_name JOIN departments USING (department_id,manager_id); 25. Realizar la consulta anterior con la nueva sintaxis utilizando la cláusula NATURAL JOIN. SELECT first_name, manager_id, department_id, department_name NATURAL JOIN departments; 26. Mostrar el número de registros resultantes del producto cartesiano entre la tabla LOCATIONS y REGIONS sin utilizar la sintaxis de JOIN.

SELECT COUNT(*) FROM locations, regions; 27. Realizar la misma operación anterior utilizando la sintaxis de JOIN para un producto cartesiano. SELECT COUNT(*) FROM locations CROSS JOIN regions; 28. Para el siguiente ejercicio de auto evaluación es necesario establecer una conexión con el usuario OE y conocer la estructura e información de las tablas CUSTOMERS y ORDERS. El departamento de ventas ha pedido un reporte especializado al administrador de la base de datos, donde involucra información de los clientes y los pedidos realizados. Es necesario realizar una sola consulta para el reporte requerido, de acuerdo a las siguientes condiciones: El nombre de los clientes debe ser con letras mayúsculas con el título NOMBRE El apellido de los clientes en letras minúsculas con el título APELLIDO. El territorio debe contener 3 símbolos + a la izquierda y 2 símbolos >> a la derecha. Se debe concatenar el lenguaje a la derecha de la cadena conformada anteriormente y agregarle el título TERRITORIO. No utilizar funciones (CONCAT), ni operadores de concatenación ( ). De la cuenta de correo electrónico solo debe de mostrar el símbolo de arroba y dominio. Donde la segunda parte del dominio EXAMPLE.COM debe ser reemplazada por VENTAS.COM y agregar el título DOMINIO. La fecha de nacimiento debe mostrarse en un formato específico '[12] [de] [Agosto] [de] [2015] y como título NACIMIENTO.

A partir de la fecha de nacimiento indicar el número de años que tiene el cliente, basado en la fecha y hora precisa de la sesión. Redondear a un solo decimal y agregar el título AÑOS. Unir los clientes con sus órdenes. Indicar la fecha de entrega, a partir de la fecha en que el cliente realizó su orden sumando 1 mes y truncarla con referencia al mes. Incluir el título ENTREGA. Agrupar para mostrar la suma del costo de las órdenes que cumplan el criterio de agrupación. Mostrar un número entero superior de la suma y agregar el título COSTO. Del criterio de selección, solo mostrar los registros que tengan un COSTO mayor a 100,000. Una vez obtenido el reporte anterior, mostrar solo los registros que intersecan con el criterio de COSTO mayor a 150,000. Ordenar por COSTO de manera descendente. Resultado: Solo 3 registros SELECT UPPER(cust_first_name) "NOMBRE", LOWER(cust_last_name) "APELLIDO", CONCAT(RPAD(LPAD(nls_territory, LENGTH(nls_territory)+3, '+'), LENGTH(nls_territory)+5,'>>'), nls_language) "TERRITORIO", REPLACE(SUBSTR(cust_email, INSTR(cust_email, '@')), 'EXAMPLE.COM', 'VENTAS.COM') "DOMINIO", TO_CHAR(date_of_birth, 'fm [DD] "[de]" [MONTH] "[de]" [YYYY]') "NACIMIENTO", ROUND(MONTHS_BETWEEN(CURRENT_TIMESTAMP,date_of_birth)/12, 1) "AÑOS", TRUNC(ADD_MONTHS(order_date,1),'MONTH') "ENTREGA", CEIL(SUM(order_total)) "COSTO" FROM customers JOIN orders USING(customer_id) GROUP BY UPPER(cust_first_name), LOWER(cust_last_name), CONCAT(RPAD(LPAD(nls_territory, LENGTH(nls_territory)+3, '+'),

LENGTH(nls_territory)+5, '>>'), nls_language), REPLACE(SUBSTR(cust_email, INSTR(cust_email, '@')), 'EXAMPLE.COM', 'VENTAS.COM'), TO_CHAR(date_of_birth,'fm [DD] "[de]" [MONTH] "[de]" [YYYY]'), ROUND(MONTHS_BETWEEN(CURRENT_TIMESTAMP, date_of_birth)/12, 1), TRUNC(ADD_MONTHS(order_date,1), 'MONTH') HAVING CEIL(SUM(order_total)) > 100000 INTERSECT SELECT UPPER(cust_first_name) "NOMBRE", LOWER(cust_last_name) "APELLIDO", CONCAT(RPAD(LPAD(nls_territory, LENGTH(nls_territory)+3, '+'), LENGTH(nls_territory)+5, '>>'), nls_language) "TERRITORIO", REPLACE(SUBSTR(cust_email, INSTR(cust_email, '@')), 'EXAMPLE.COM', 'VENTAS.COM') "DOMINIO", TO_CHAR(date_of_birth,'fm [DD] "[de]" [MONTH] "[de]" [YYYY]') "NACIMIENTO", ROUND(MONTHS_BETWEEN(CURRENT_TIMESTAMP, date_of_birth)/12, 1) "AÑOS", TRUNC(ADD_MONTHS(order_date,1),'MONTH') "ENTREGA", CEIL(SUM(order_total)) "COSTO" FROM customers JOIN orders USING(customer_id) GROUP BY UPPER(cust_first_name), LOWER(cust_last_name), CONCAT(RPAD(LPAD(nls_territory, LENGTH(nls_territory)+3, '+'), LENGTH(nls_territory)+5, '>>'), nls_language), REPLACE(SUBSTR(cust_email, INSTR(cust_email, '@')), 'EXAMPLE.COM',

'VENTAS.COM'), TO_CHAR(date_of_birth,'fm [DD] "[de]" [MONTH] "[de]" [YYYY]'), ROUND(MONTHS_BETWEEN(CURRENT_TIMESTAMP,date_of_birth)/12, 1), TRUNC(ADD_MONTHS(order_date,1), 'MONTH') HAVING CEIL(SUM(order_total)) > 150000 ORDER BY "COSTO" DESC;