0% encontró este documento útil (0 votos)
36 vistas3 páginas

Consultas SQL para Gestión de Datos Empresariales

El documento describe varias consultas SQL para gestionar y analizar datos de productos, clientes, pedidos y empleados en un sistema. Incluye la obtención de información como precios, descuentos, datos de contacto de clientes, detalles de pedidos, y cálculos de salarios y antigüedad de empleados. También se mencionan situaciones específicas para identificar pedidos sospechosos y calcular promedios de salarios por departamento.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
36 vistas3 páginas

Consultas SQL para Gestión de Datos Empresariales

El documento describe varias consultas SQL para gestionar y analizar datos de productos, clientes, pedidos y empleados en un sistema. Incluye la obtención de información como precios, descuentos, datos de contacto de clientes, detalles de pedidos, y cálculos de salarios y antigüedad de empleados. También se mencionan situaciones específicas para identificar pedidos sospechosos y calcular promedios de salarios por departamento.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

ALTER SESSION SET CURRENT_SCHEMA = BDY1102_P1;

-------------------------------------------------- SITUACION 1 --------------------------------------------------

-- Código del Producto (CODE): El identificador único asignado a cada producto en nuestro sistema.
-- Nombre del Producto (NAME): El nombre del producto, incluyendo SOLO la primera palabra del nombre del producto en caso de ser un nombre
compuesto
-- (es decir, si el nombre es “bolso de piel” solo debe decir “bolso”).
-- Precio Original (PRICE): El precio original del producto registrado en la base de datos.
-- Descuento (DISCOUNT): El monto del descuento, calculado como el 12% del precio original.
-- Precio de Venta (SALE PRICE): El precio final de venta después de aplicar el descuento del 12%.

SELECT PRODUCTO_ID AS "CODE",


NOMBRE AS "NAME",
PRECIO AS "PRICE",
PRECIO * 0.12 AS "DISCOUNT",
PRECIO - (PRECIO * 0.12) AS "SALE PRICE"
FROM PRODUCTOS
ORDER BY NOMBRE ASC, "SALE PRICE" DESC;

SELECT * FROM PRODUCTOS;

-------------------------------------------------- SITUACION 2 --------------------------------------------------

-- 1. ID del Cliente (ID): El identificador único asignado a cada cliente en nuestro sistema.
-- 2. Apellido (LAST NAME): El apellido del cliente, que nos permite tratar a nuestros clientes con un enfoque personalizado.
-- 3. Primer Nombre (FIRST NAME): El primer nombre del cliente, que complementa el campo del apellido y brinda un enfoque más cercano en la
comunicación.
-- 4. Número de Teléfono (PHONE): El número de teléfono de contacto del cliente, o "NO PHONE" si no se proporcionó un número. En caso de que
el número
-- esté presente, se aplicará una transformación para eliminar cualquier guión (-) y presentar el número sin espacios ni caracteres no
numéricos.

SELECT CLIENTE_ID AS "ID",


substr(NOMBRE, instr(NOMBRE,' ')) AS "LAST NAME",
substr(NOMBRE, 1, instr(NOMBRE, ' ')) AS "FIRST NAME",
CASE
WHEN TELEFONO is null THEN NVL(TELEFONO, 'NO PHONE')
WHEN TELEFONO is not null THEN REPLACE(TELEFONO,'-','')
END AS "PHONE"
FROM CLIENTES
ORDER BY "LAST NAME" ASC;

SELECT * FROM CLIENTES;


SELECT REPLACE(TELEFONO,'-','') FROM CLIENTES;

-------------------------------------------------- SITUACION 3 --------------------------------------------------


-- 1. ID del Pedido (ORDER ID): El identificador único asignado a cada pedido en nuestro sistema.
-- 2. ID del Cliente (CLIENT ID): El identificador único del cliente que realizó el pedido.
-- 3. Fecha del Pedido (ORDER DATE): La fecha en que se realizó el pedido, en el formato DD/MM.
-- 4. Total del Pedido (TOTAL): El monto total del pedido.

SET DEFINE ON
PROMPT introcuzca un valor para CANTIDAD,
ACCEPT CANTIDAD

SELECT
PE.PEDIDO_ID AS "ORDER ID",
PE.CLIENTE_ID AS "CLIENT ID",
TO_CHAR(PE.FECHA_PEDIDO, 'DD/MM') AS "ORDER_DATE",
PE.TOTAL AS "TOTAL"
FROM PEDIDOS PE
JOIN DETALLES_PEDIDO DP
ON PE.PEDIDO_ID = DP.PEDIDO_ID
WHERE PE.TOTAL <= :CANTIDAD
ORDER BY TO_CHAR(PE.FECHA_PEDIDO, 'DD/MM') ASC;

SELECT * FROM PEDIDOS;


SELECT * FROM DETALLES_PEDIDO;

-------------------------------------------------- SITUACION 4 --------------------------------------------------


-- 1. ID del Empleado (ID): El identificador único asignado a cada empleado en nuestro sistema.

-- 2. Apellido (LAST NAME): El apellido del empleado, que nos permite identificarlo de manera única.

-- 3. Fecha de Contratación (HIRE DATE): La fecha en que el empleado fue contratado, presentada en el formato DD/MM/YYYY.

-- 4. Años de Servicio (SERVICE YEARS): La cantidad de años completos de servicio del empleado en la empresa,
-- calculados utilizando la fecha actual y la fecha de contratación del empleado, este valor puede incluir aproximaciones.

SELECT EMPLEADO_ID AS "ID",


SUBSTR(NOMBRE,INSTR(NOMBRE,' ')) AS "APELLIDO",
TO_CHAR(FECHA_CONTRATACION, 'DD/MM/YYYY') AS "HIRE DATE",
ROUND(TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12)) AS "SERVICE YEARS"
FROM EMPLEADOS
WHERE ROUND(TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12)) >= 10 AND EMPLEADO_ID >= 410
ORDER BY FECHA_CONTRATACION ASC;

SELECT * FROM EMPLEADOS;

-------------------------------------------------- SITUACION 5 --------------------------------------------------


-- 1. ID del Empleado (ID): El identificador único asignado a cada empleado en nuestro sistema.
-- 2. Apellido y Cargo (LASTNAME, JOB): El apellido del empleado, seguido de una coma y su cargo en la empresa.
-- Esto nos permitirá identificar a cada empleado junto con su posición.

-- 3. Años de Servicio (SERVICE YEARS): La cantidad de años completos de servicio del empleado en la empresa,
-- calculados utilizando la fecha actual y la fecha de contratación del empleado, debe estar TRUNCADO,
-- de manera que solo se contabilicen los años que efectivamente se han completado.

-- 4. Salario Base (BASE): El salario base asignado al empleado.


-- 5. Bonificación por Antigüedad (EXTRAS): Una bonificación calculada en función de los años de servicio del empleado.
-- Se aplica un aumento gradual en función de la antigüedad según la siguiente escala: menor o igual a 5 equivale a 20% del salario base,
-- entre 6 y 9 equivale a 25% del salario base, mayor o igual a 10 equivale a 30% del salario base.

-- 6. Deducciones Legales (LEGAL CHARGES): Deducciones legales equivalentes al 20% del SALARIO BASE del empleado.
-- 7. Salario Total (TOTAL): El salario bruto total del empleado, incluyendo el salario base y la bonificación por antigüedad.
-- 8. Salario con Ajuste (SALARY): El salario final del empleado considerando salario base, bonificación extra y descuentos legales.

SELECT
EMPLEADO_ID AS "ID",
SUBSTR(NOMBRE,INSTR(NOMBRE, ' ')) || ', '|| CARGO AS "LASTNAME AND JOB",
TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12) AS "SERVICE YEARS",
SALARIO AS "BASE",
CASE
WHEN TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12) <= 5 THEN (SALARIO * 0.20)
WHEN TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12) > 5 AND TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12) < 10 THEN
(SALARIO * 0.25)
WHEN TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12) >= 10 THEN (SALARIO * 0.30)
END AS "EXTRAS",
SALARIO * 0.20 AS "LEGAL CHARGES",
CASE
WHEN TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12) <= 5 THEN (SALARIO * 1.20)
WHEN TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12) > 5 AND TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12) < 10 THEN
(SALARIO * 1.25)
WHEN TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12) >= 10 THEN (SALARIO * 1.30)
END AS "TOTAL",
CASE
WHEN TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12) <= 5 THEN (SALARIO * 1.20) - (SALARIO * 0.20)
WHEN TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12) > 5 AND TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12) < 10 THEN
(SALARIO * 1.25) - (SALARIO * 0.20)
WHEN TRUNC(MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) / 12) >= 10 THEN (SALARIO * 1.30) - (SALARIO * 0.20)
END AS "SALARY"
FROM EMPLEADOS
WHERE EMPLEADO_ID BETWEEN :INICIO AND :FIN
ORDER BY 3 ASC, 4 ASC;

SELECT * FROM EMPLEADOS;

-------------------------------------------------- SITUACION 6 --------------------------------------------------


-- 1. ID del Pedido (ID): El identificador único del pedido que cumple con los criterios de alerta.
-- 2. ID del Cliente (CLIENT ID): El identificador único del cliente asociado al pedido sospechoso.
-- 3. Fecha del Pedido (ORDER DATE): La fecha en que se realizó el pedido.
-- 4. Total del Pedido (TOTAL): El monto total del pedido en cuestión.

CREATE TABLE PEDIDOS_FRAUDE AS


SELECT
PEDIDO_ID AS "ID",
CLIENTE_ID AS "CLIENT ID",
TO_CHAR(FECHA_PEDIDO, 'DD/MM/YY') AS "ORDER DATE",
TOTAL AS "TOTAL"
FROM PEDIDOS
WHERE EXTRACT(MONTH FROM FECHA_PEDIDO) = 9 AND CLIENTE_ID IN (314,316,318)
ORDER BY CLIENTE_ID ASC;

SELECT * FROM PEDIDOS_FRAUDE;


DROP TABLE PEDIDOS_FRAUDE;
SELECT * FROM PEDIDOS;

------------------------------------------------

SELECT TO_CHAR(C.NUMRUN,'999G999G999') ||'-'||C.DVRUN "RUN CLIENTE"


,INITCAP(C.PNOMBRE ||' '||C.APPATERNO||' '||C.APMATERNO) "NOMBRE CLIENTE"
,TO_CHAR(C.fecha_nacimiento, 'DD') || ' de ' || TRIM(TO_CHAR(C.fecha_nacimiento, 'Month', 'NLS_DATE_LANGUAGE=SPANISH')) AS "DIA DE CUMPLEAÑOS"
,C.DIRECCION||'/'||UPPER(R.NOMBRE_REGION) "Dirección Sucursal/REGION SUCURSAL"
FROM CLIENTE C
JOIN REGION R ON C.COD_REGION = R.COD_REGION
WHERE EXTRACT(MONTH FROM C.fecha_nacimiento) = (EXTRACT(MONTH FROM SYSDATE) + 2)
;

SELECT TO_CHAR(C.NUMRUN,'999G999G999') ||'-'||C.DVRUN "RUN CLIENTE"


,UPPER(C.PNOMBRE ||' '||C.APPATERNO||' '||C.APMATERNO) "NOMBRE CLIENTE"
,'$'||TO_CHAR(TR.MONTO_TRANSACCION,'999G999G999') "MONTO COMPRAS/AVANCES/S.AVANCES"
,'$'||TO_CHAR(TRUNC(TR.MONTO_TOTAL_TRANSACCION/10000)*250,'999G999G999') "TOTAL PUNTOS ACUMULADOS"
FROM CLIENTE C
RIGHT JOIN TARJETA_CLIENTE T ON C.NUMRUN = T.NUMRUN
RIGHT JOIN TRANSACCION_TARJETA_CLIENTE TR ON T.NRO_TARJETA = TR.NRO_TARJETA
WHERE EXTRACT(YEAR FROM TR.fecha_transaccion) = (EXTRACT(YEAR FROM SYSDATE) -1)
ORDER BY 3
;

SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME,


(SELECT DEPARTMENT_NAME FROM DEPARTMENTS
WHERE DEPARTMENT_ID = EMPLOYEES.DEPARTMENT_ID) AS DEPARTMENT_NAME
FROM EMPLOYEES;

SELECT DEPARTMENT_ID, TRUNC(PROMEDIO) PROMEDIO


FROM
(SELECT DEPARTMENT_ID, AVG(SALARY) AS "PROMEDIO"
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID)
WHERE
PROMEDIO > 5000;

SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY


FROM EMPLOYEES
WHERE SALARY > (SELECT AVG(EMPLOYEES.SALARY) FROM EMPLOYEES);

También podría gustarte