SQL: ejercicio de instrucción SELECT

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

SQL: ejercicio de instrucción SELECT

Si desea poner a prueba sus habilidades con las sentencias SQL SELECT, pruebe algunos de nuestros ejercicios.

Estos ejercicios le permiten probar sus habilidades usando la instrucción SELECT. Recibirá preguntas que necesitan ser resueltas. Después de cada ejercicio, proporcionamos soluciones para que puedas comprobar tus respuestas.

¡Empecemos!

Ejercicio 1:

De acuerdo con la tabla de empleados a continuación, seleccione todos los campos de la tabla de empleados con un salario menor o igual a $ 52,500 (no se requiere clasificación):

CREATE TABLE employees
( employee_number int NOT NULL,
  last_name char(50) NOT NULL,
  first_name char(50) NOT NULL,
  salary int,
  dept_id int,
  CONSTRAINT employees_pk PRIMARY KEY (employee_number)
);

INSERT INTO employees
(employee_number, last_name, first_name, salary, dept_id)
VALUES
(1001, 'Smith', 'John', 62000, 500);

INSERT INTO employees
(employee_number, last_name, first_name, salary, dept_id)
VALUES
(1002, 'Anderson', 'Jane', 57500, 500);

INSERT INTO employees
(employee_number, last_name, first_name, salary, dept_id)
VALUES
(1003, 'Everest', 'Brad', 71000, 501);

INSERT INTO employees
(employee_number, last_name, first_name, salary, dept_id)
VALUES
(1004, 'Horvath', 'Jack', 42000, 501);

Solución al Ejercicio #1:

La siguiente instrucción SQL SELECT seleccionará estos registros de la tabla de empleados:

SELECT *
FROM employees
WHERE salary <= 52500;

Estos son los resultados que deberías ver:

ID de empleado apellido nombre salario dept_id
1004 Horvath Jack 42000 501

Ejercicio de práctica #2:

De la siguiente tabla de proveedores, seleccione un valor de ciudad único ubicado en California y ordene los resultados por ciudad en orden descendente:

CREATE TABLE suppliers
( supplier_id int NOT NULL,
  supplier_name char(50) NOT NULL,
  city char(50),
  state char(25),
  CONSTRAINT suppliers_pk PRIMARY KEY (supplier_id)
);

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(100, 'Microsoft', 'Redmond', 'Washington');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(200, 'Google', 'Mountain View', 'California');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(300, 'Oracle', 'Redwood City', 'California');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(400, 'Kimberly-Clark', 'Irving', 'Texas');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(500, 'Tyson Foods', 'Springdale', 'Arkansas');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(600, 'SC Johnson', 'Racine', 'Wisconsin');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(700, 'Dole Food Company', 'Westlake Village', 'California');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(800, 'Flowers Foods', 'Thomasville', 'Georgia');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(900, 'Electronic Arts', 'Redwood City', 'California');

Solución al ejercicio #2:

La siguiente instrucción SELECT seleccionará estos registros de la tabla de proveedores:

SELECT DISTINCT city
FROM suppliers
WHERE state="California"
ORDER BY city DESC;

Estos son los resultados que deberías ver:

Ciudad
pueblo del lago oeste
ciudad de secoya
paisaje de la cima de la montaña

Ejercicio de práctica #3:

De la tabla de clientes y la tabla de pedidos a continuación, seleccione customer_id y last_name de la tabla de clientes y order_date de la tabla de pedidos, donde tanto los clientes como la tabla de pedidos tienen valores de customer_id coincidentes. Ordene los resultados en orden descendente por customer_id.

CREATE TABLE customers
( customer_id int NOT NULL,
  last_name char(50) NOT NULL,
  first_name char(50) NOT NULL,
  favorite_website char(50),
  CONSTRAINT customers_pk PRIMARY KEY (customer_id)
);

CREATE TABLE orders
( order_id int NOT NULL,
  customer_id int,
  order_date date,
  CONSTRAINT orders_pk PRIMARY KEY (order_id)
);

INSERT INTO customers
(customer_id, last_name, first_name, favorite_website)
VALUES
(4000, 'Jackson', 'Joe', 'prograrmaplus.com');

INSERT INTO customers
(customer_id, last_name, first_name, favorite_website)
VALUES
(5000, 'Smith', 'Jane', 'digminecraft.com');

INSERT INTO customers
(customer_id, last_name, first_name, favorite_website)
VALUES
(6000, 'Ferguson', 'Samantha', 'bigactivities.com');

INSERT INTO customers
(customer_id, last_name, first_name, favorite_website)
VALUES
(7000, 'Reynolds', 'Allen', 'checkyourmath.com');

INSERT INTO customers
(customer_id, last_name, first_name, favorite_website)
VALUES
(8000, 'Anderson', 'Paige', NULL);

INSERT INTO customers
(customer_id, last_name, first_name, favorite_website)
VALUES
(9000, 'Johnson', 'Derek', 'prograrmaplus.com');

INSERT INTO orders
(order_id, customer_id, order_date)
VALUES
(1,7000,'2016/04/18');

INSERT INTO orders
(order_id, customer_id, order_date)
VALUES
(2,5000,'2016/04/18');

INSERT INTO orders
(order_id, customer_id, order_date)
VALUES
(3,8000,'2016/04/19');

INSERT INTO orders
(order_id, customer_id, order_date)
VALUES
(4,4000,'2016/04/20');

INSERT INTO orders
(order_id, customer_id, order_date)
VALUES
(5,null,'2016/05/01');

Solución al Ejercicio #3:

La siguiente instrucción SQL SELECT seleccionará estos registros de las tablas Cliente y Pedidos (usando INNER JOIN):

SELECT customers.customer_id, customers.last_name, orders.order_date
FROM customers 
INNER JOIN orders
ON customers.customer_id = orders.customer_id
ORDER BY customers.customer_id DESC;

Estos son los resultados que deberías ver:

Identificación del cliente apellido fecha de orden
8000 anderson 2016/04/19
5000 Herrero 2016/04/18
7000 Reynolds 2016/04/18
4000 jackson 2016/04/20

Ejercicio de práctica #4:

Con base en la tabla Clientes y Pedidos del ejercicio n.º 3, seleccione id_cliente y apellido de la tabla Clientes, donde hay un registro en la tabla Pedidos para ese id_cliente. Ordene los resultados en orden ascendente por last_name, luego en orden descendente por customer_id.

CREATE TABLE customers
( customer_id int NOT NULL,
  last_name char(50) NOT NULL,
  first_name char(50) NOT NULL,
  favorite_website char(50),
  CONSTRAINT customers_pk PRIMARY KEY (customer_id)
);

CREATE TABLE orders
( order_id int NOT NULL,
  customer_id int,
  order_date date,
  CONSTRAINT orders_pk PRIMARY KEY (order_id)
);

Solución al Ejercicio #4:

La siguiente instrucción SQL SELECT seleccionará registros de las tablas Cliente y Pedidos (usando la cláusula SQL EXISTS):

SELECT customer_id, last_name
FROM customers
WHERE EXISTS
  ( SELECT orders.customer_id
    FROM orders
    WHERE orders.customer_id = customers.customer_id )
ORDER BY last_name ASC, customer_id DESC;

Como alternativa, puede excluir la palabra clave ASC para nombre_cliente en la cláusula ORDER BY. Ambas declaraciones SELECT producen el mismo resultado:

SELECT customer_id, last_name
FROM customers
WHERE EXISTS
  ( SELECT orders.customer_id
    FROM orders
    WHERE orders.customer_id = customers.customer_id )
ORDER BY last_name, customer_id DESC;

Estos son los resultados que deberías ver:

Identificación del cliente apellido
8000 anderson
4000 jackson
7000 Reynolds
5000 Herrero
(Visited 6 times, 1 visits today)