Apelido do Blogger
Blogger Página principal Link: Portal inicial do BloggerLink da página da coluna do Blogger: Portal da coluna -- Criação de tecnologia de segurança de rede
Intenção original: A intenção original deste blog é se comunicar com amigos técnicos. A tecnologia de todos tem deficiências, e o mesmo vale para os blogueiros. Peça conselhos com humildade. Amigos dar orientação.
O lema do blogueiro: descubra a luz, siga a luz, torne-se a luz e emita a luz;
a direção de pesquisa do blogueiro: testes de penetração, aprendizado de máquina;
a mensagem do blogueiro: obrigado por seu apoio, seu apoio é a força motriz para mim seguir em frente;Link de salto do site de aprendizagem: Niuke Brush Questions Network
prefácio
Recomende um software de escovação de perguntas muito bom para todos. Niuke Brush Questions Network --- Aprenda SQL juntos
Por que os blogueiros gostam de usar este site para aprender?
Existem três razões principais:
1. Contém um grande número de bancos de perguntas de entrevista
2. A cobertura da indústria é relativamente abrangente
3. As perguntas das perguntas de escovação estão de acordo com o processo do simples ao difícil
1. SQL usa subconsultas
(1) Subconsulta
Uma subconsulta é uma consulta aninhada em outra instrução, como: select , insert, update, delete
(2) Subconsultas aninhadas
As subconsultas podem ser aninhadas em outra subconsulta, o SQL Server suporta até 32 níveis de aninhamento
(3) Sub-rotinas relacionadas
① Uma subconsulta correlacionada é uma subconsulta que usa os valores da consulta externa . ou seja , depende do valor da consulta externa
② Subconsultas correlacionadas não podem ser executadas independentemente como subconsultas simples
③ Execute repetidamente a subconsulta correlacionada uma vez para cada linha avaliada pela consulta externa. As subconsultas correlacionadas também são conhecidas como subconsultas de repetição .
2. Perguntas sobre escova
1. Escova Pergunta 1
(1) Tópicos
Pergunta: Retornar uma lista de clientes que compraram produtos por US$ 10 ou mais
Descrição: OrderItems representa a tabela de itens do pedido, contendo os campos número do pedido: order_num, order price: item_price; a tabela Orders representa a tabela de informações do pedido, incluindo o ID do cliente: cust_id e o número do pedido: order_num
(2) Exemplo
输入:
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 da operação
2. Pergunta 2 da escova
(1) Tópicos
Tópico: Determinar quais pedidos compraram o produto com prod_id BR01 (1)
Descrição: A tabela OrderItems representa a tabela de informações do item do pedido, prod_id é o ID do produto; a tabela Orders representa a tabela do pedido e o cust_id representa o ID do cliente e a data do pedido order_date
(2) Exemplo
输入:
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 da operação
3. Escove a pergunta três
(1) Tópicos
Título: Retornar os e-mails de todos os clientes que compraram produtos com prod_id BR01 (1)
Descrição: Você deseja saber a data do pedido dos produtos BR01, existe uma tabela OrderItems representando a tabela de informações do item do pedido, prod_id é o id do produto; a tabela Orders representa a tabela do pedido, cust_id representa o id do cliente e a data do pedido order_date; a tabela Customers contém o email do cliente cust_email e ID do cliente cust_id
(2) Exemplo
输入:
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 da operação
4. Escova Pergunta 4
(1) Tópicos
Pergunta: Devolva o valor total dos diferentes pedidos de cada cliente
Descrição: precisamos de uma lista de IDs de clientes contendo o valor total que eles pediram. A tabela OrderItems representa as informações do pedido e a tabela OrderItems tem o número do pedido: order_num, o preço de venda do item: item_price e a quantidade do item: quantidade.
(2) Exemplo
输入:
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 da operação
5. Escova Pergunta 5
(1) Tópicos
Pergunta: Recupere todos os nomes de produtos e os totais de vendas correspondentes da tabela Produtos
Descrição: Recupere todos os nomes de produtos na tabela Produtos: prod_name, ID do produto: prod_id
OrderItems representa a tabela de itens do pedido, produto do pedido: prod_id, quantidade vendida: quantidade
(2) Exemplo
digitar:
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 da operação
Este artigo é o décimo quarto dia de perguntas de escovação de SQL
Bem-vindos amigos, clique no link a direita para aprender com o blogueiro, clique para aprender