[Preguntas de pincel de SQL] DÍA14----Ejercicio especial sobre el uso de subconsultas en SQL

Apodo de Blogger
Página principal de Blogger Enlace: Portal de inicio de Blogger

Enlace de la página de la columna de Blogger: Portal de columna --
Creación de tecnología de seguridad de red Intención original: La intención original de este blog es comunicarse con amigos técnicos. La tecnología de todos tiene deficiencias, y lo mismo es cierto para los blogueros. Pida consejo con humildad. Amigos dar orientación.
El lema del blogger: descubre la luz, sigue la luz, conviértete en la luz y emite la luz;
la dirección de investigación del blogger: pruebas de penetración, aprendizaje automático;
el mensaje del blogger: gracias por tu apoyo, tu apoyo es la fuerza impulsora para mí avanzar;

Enlace de salto del sitio web de aprendizaje: Niuke Brush Questions Network

 

prefacio

Recomiende un muy buen software de limpieza de preguntas para todos Niuke Brush Questions Network---Aprender SQL juntos

 ¿Por qué a los bloggers les gusta usar este sitio web para aprender?

Hay tres razones principales:

1. Contiene una gran cantidad de bancos de preguntas de entrevistas

2. La cobertura de la industria es relativamente amplia

3. Las preguntas de cepillado están de acuerdo con el proceso de simple a difícil

1. SQL usa subconsultas

(1) Subconsulta

Una subconsulta es una consulta anidada en otra declaración, como: seleccionar , insertar, actualizar, eliminar

(2) Subconsultas anidadas

Las subconsultas se pueden anidar dentro de otra subconsulta, SQL Server admite hasta 32 niveles de anidamiento

(3) Subrutinas relacionadas

① Una subconsulta correlacionada es una subconsulta que utiliza los valores de la consulta externa . es decir , depende del valor de la consulta externa

② Las subconsultas correlacionadas no se pueden ejecutar de forma independiente como subconsultas simples

③ Ejecute repetidamente la subconsulta correlacionada una vez por cada fila evaluada por la consulta externa. Las subconsultas correlacionadas también se conocen como subconsultas repetidas .

2. Cepillo de preguntas

1. Cepillo Pregunta 1

(1) Temas

Pregunta: Devolver una lista de clientes que compraron productos por $10 o más

Descripción: OrderItems representa la tabla de artículos del pedido, que contiene los campos número de pedido: order_num, precio del pedido: item_price; la tabla Orders representa la tabla de información del pedido, incluida la identificación del cliente: cust_id y el número de pedido: order_num

(2) Ejemplo

输入:

DROP TABLE IF EXISTS `OrderItems`;

  CREATE TABLE IF NOT EXISTS `OrderItems`(

    order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',

    item_price INT(16) NOT NULL COMMENT '售出价格'

  );

  INSERT `OrderItems` VALUES ('a1',10),('a2',1),('a2',1),('a4',2),('a5',5),('a2',1),('a7',7);


  DROP TABLE IF EXISTS `Orders`;

  CREATE TABLE IF NOT EXISTS `Orders`(

    order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',

    cust_id VARCHAR(255) NOT NULL COMMENT '顾客id'

  );

  INSERT `Orders` VALUES ('a1','cust10'),('a2','cust1'),('a2','cust1'),('a4','cust2'),('a5','cust5'),('a2','cust1'),('a7','cust7');


输出:


cust10

(3) Código

select cust_idfrom Orderswhere order_num in (

    select order_num

    from OrderItems

    where item_price >=10

)

(4) Resultado de la operación

2. Cepillo pregunta 2

(1) Temas

Tema: Determinar qué pedidos compraron el producto con prod_id BR01 (1)

Descripción: la tabla OrderItems representa la tabla de información del artículo del pedido, prod_id es el id del producto; la tabla Orders representa la tabla de pedidos y cust_id representa el id del cliente y la fecha del pedido order_date

(2) Ejemplo

输入:

DROP TABLE IF EXISTS `OrderItems`;

  CREATE TABLE IF NOT EXISTS `OrderItems`(

    prod_id VARCHAR(255) NOT NULL COMMENT '产品id',

    order_num VARCHAR(255) NOT NULL COMMENT '商品订单号'

  );

  INSERT `OrderItems` VALUES ('BR01','a0001'),('BR01','a0002'),('BR02','a0003'),('BR02','a0013');


  DROP TABLE IF EXISTS `Orders`;

  CREATE TABLE IF NOT EXISTS `Orders`(

    order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',

    cust_id VARCHAR(255) NOT NULL COMMENT '顾客id',

    order_date TIMESTAMP NOT NULL COMMENT '下单时间'

  );

  INSERT `Orders` VALUES ('a0001','cust10','2022-01-01 00:00:00'),('a0002','cust1','2022-01-01 00:01:00'),('a0003','cust1','2022-01-02 00:00:00'),('a0013','cust2','2022-01-01 00:20:00');


输出:


cust10|2022-01-01 00:00:00

cust1|2022-01-01 00:01:00

(3) Código

select cust_id,order_datefrom Orderswhere order_num in

(select order_numfrom OrderItemswhere prod_id = 'BR01')

(4) Resultado de la operación

3. Cepillo pregunta tres

(1) Temas

Título: Devuelva los correos electrónicos de todos los clientes que compraron productos con prod_id BR01 (1)

Descripción: desea saber la fecha de pedido de productos BR01, hay una tabla de artículos de pedido que representa la tabla de información de artículos de pedido, prod_id es el id del producto; la tabla de pedidos representa la tabla de pedidos, cust_id representa el id del cliente y la fecha del pedido order_date; la tabla Customers contiene el correo electrónico del cliente cust_email y cust_id ID de cliente

 

(2) Ejemplo

输入:

DROP TABLE IF EXISTS `OrderItems`;

  CREATE TABLE IF NOT EXISTS `OrderItems`(

    prod_id VARCHAR(255) NOT NULL COMMENT '产品id',

    order_num VARCHAR(255) NOT NULL COMMENT '商品订单号'

  );

  INSERT `OrderItems` VALUES ('BR01','a0001'),('BR01','a0002'),('BR02','a0003'),('BR02','a0013');


  DROP TABLE IF EXISTS `Orders`;

  CREATE TABLE IF NOT EXISTS `Orders`(

    order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',

    cust_id VARCHAR(255) NOT NULL COMMENT '顾客id',

    order_date TIMESTAMP NOT NULL COMMENT '下单时间'

  );

  INSERT `Orders` VALUES ('a0001','cust10','2022-01-01 00:00:00'),('a0002','cust1','2022-01-01 00:01:00'),('a0003','cust1','2022-01-02 00:00:00'),('a0013','cust2','2022-01-01 00:20:00');

DROP TABLE IF EXISTS `Customers`;CREATE TABLE IF NOT EXISTS `Customers`(

    cust_id VARCHAR(255) NOT NULL COMMENT '顾客id',

    cust_email VARCHAR(255) NOT NULL COMMENT '顾客email'

  );INSERT `Customers` VALUES ('cust10','[email protected]'),('cust1','[email protected]'),('cust2','[email protected]');


输出:


[email protected]

[email protected]

(3) Código

select

    Customers.cust_emailfrom

    Ordersleft join OrderItems on OrderItems.order_num = Orders.order_numleft join Customers on Customers.cust_id = Orders.cust_idwhere

    OrderItems.prod_id = "BR01"

(4) Resultado de la operación

4. Cepillo pregunta 4

(1) Temas

Pregunta: Devolver el importe total de los diferentes pedidos de cada cliente

Descripción: Necesitamos una lista de ID de clientes que contengan la cantidad total que han pedido. La tabla OrderItems representa la información del pedido y la tabla OrderItems tiene el número de pedido: order_num, el precio de venta del artículo: item_price y la cantidad del artículo: cantidad.

 

(2) Ejemplo

输入:

DROP TABLE IF EXISTS `OrderItems`;CREATE TABLE IF NOT EXISTS `OrderItems`(

order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',

item_price INT(16) NOT NULL COMMENT '售出价格',

quantity INT(16) NOT NULL COMMENT '商品数量'

);INSERT `OrderItems` VALUES ('a0001',10,105),('a0002',1,1100),('a0002',1,200),('a0013',2,1121),('a0003',5,10),('a0003',1,19),('a0003',7,5);

DROP TABLE IF EXISTS `Orders`;CREATE TABLE IF NOT EXISTS `Orders`(

  order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',

  cust_id VARCHAR(255) NOT NULL COMMENT '顾客id'

);INSERT `Orders` VALUES ('a0001','cust10'),('a0003','cust1'),('a0013','cust2');


输出:


cust2|2242.000

cust10|1050.000

cust1|104.000

(3) Código

SELECT 

    o.cust_id,

    sum(oi.item_price * oi.quantity) AS total_orderedFROM Orders o JOIN OrderItems oi

    USING (order_num)GROUP BY o.cust_idORDER BY total_ordered DESC

(4) Resultado de la operación

 

5. Cepillo Pregunta 5

(1) Temas

Pregunta: Recupere todos los nombres de productos y los totales de ventas correspondientes de la tabla Productos

Descripción: recuperar todos los nombres de productos en la tabla Productos: prod_name, id de producto: prod_id

OrderItems representa la tabla de artículos de pedido, producto de pedido: prod_id, cantidad vendida: cantidad

 

(2) Ejemplo

ingresar:

DROP TABLE IF EXISTS `Products`;CREATE TABLE IF NOT EXISTS `Products` (

`prod_id` VARCHAR(255) NOT NULL COMMENT '产品 ID',

`prod_name` VARCHAR(255) NOT NULL COMMENT '产品名称'

);INSERT INTO `Products` VALUES ('a0001','egg'),

('a0002','sockets'),

('a0013','coffee'),

('a0003','cola');

DROP TABLE IF EXISTS `OrderItems`;CREATE TABLE IF NOT EXISTS `OrderItems`(

prod_id VARCHAR(255) NOT NULL COMMENT '产品id',

quantity INT(16) NOT NULL COMMENT '商品数量'

);INSERT `OrderItems` VALUES ('a0001',105),('a0002',1100),('a0002',200),('a0013',1121),('a0003',10),('a0003',19),('a0003',5);


输出:


egg|105.000

sockets|1300.000

coffee|1121.000

cola|34.000

(3) Código

select

  prod_name,

  sum(quantity) as quant_soldfrom

  Products,

  OrderItemswhere

  OrderItems.prod_id = Products.prod_idgroup by

  prod_name

(4) Resultado de la operación

Este artículo es el decimocuarto día de preguntas de cepillado de SQL

Bienvenidos amigos, haga clic en el enlace de la derecha para aprender con el blogger, haga clic para aprender

Supongo que te gusta

Origin blog.csdn.net/weixin_50481708/article/details/126737776
Recomendado
Clasificación