[Preguntas de pincel de SQL] Día 13----Ejercicio especial de datos grupales de SQL

Apodo de Blogger: Jumping Stairs Penguin
Página de inicio 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. Agrupación

Resumen: La agrupación se establece en la cláusula GROUP BY de la sentencia SELECT. La agrupación permite que los datos se dividan en grupos lógicos para que se puedan realizar cálculos agregados en cada grupo

Función principal:

ORDENAR POR AGRUPAR POR
Ordenar produce salida Filas de grupo. pero la salida puede no estar en el orden de los grupos
Se puede usar cualquier columna (incluso se pueden usar columnas no seleccionadas) Solo se pueden seleccionar columnas o columnas de expresión, y se debe usar cada expresión de columna seleccionada
no necesariamente requerido Si usa una columna (o expresión) con una función agregada, debe usar

2. Cepillo de preguntas

1. Cepillo Pregunta 1

(1) Temas

Pregunta: Devuelva el número de filas para cada número de pedido

Descripción : escriba una instrucción SQL para devolver el número de filas (order_lines) de cada número de pedido (order_num) y ordene los resultados en orden ascendente por order_lines.

(2) Nivel de dificultad

Nivel de dificultad: Principiante

(3) Ejemplo

输入:

DROP TABLE IF EXISTS `OrderItems`;
CREATE TABLE IF NOT EXISTS `OrderItems`(
	order_num VARCHAR(255) NOT NULL COMMENT '商品订单号'
);
INSERT `OrderItems` VALUES ('a002'),('a002'),('a002'),('a004'),('a007');

输出:

a004|1
a007|1
a002|3

(4) Código

select order_num,count(*) as order_lines
from OrderItems
group by order_num
order by order_lines

(5) Captura de pantalla en ejecución

 

2. Cepillo pregunta 2

(1) Temas

Tema: Producto de menor costo por proveedor

Descripción: escriba una instrucción SQL que devuelva un campo llamado artículo_más barato que contenga el producto de menor costo por proveedor (usando prod_price de la tabla Productos) y luego ordene los resultados en orden ascendente desde el costo más bajo hasta el costo más alto.

(2) Nivel de dificultad

Nivel de dificultad: medio

(3) Ejemplo

输入:

DROP TABLE IF EXISTS `Products`;
CREATE TABLE IF NOT EXISTS `Products` (
`vend_id` VARCHAR(255) NOT NULL COMMENT '供应商ID',
`prod_price` DOUBLE NOT NULL COMMENT '产品价格'
);
INSERT INTO `Products` VALUES ('a0011',100),
('a0019',0.1),
('b0019',1000),
('b0019',6980),
('b0019',20);

输出:

vend_id|cheapest_item
a0019|0.100
b0019|20.000
a0011|100.000

(4) Código

select vend_id,prod_price as cheapest_item
from (
    select row_number() over(partition by vend_id order by prod_price asc) as row_num,
            vend_id,prod_price
    from Products) temp
where row_num = 1
order by cheapest_item;     

(5) Captura de pantalla en ejecución

3. Cepillo pregunta tres

(1) Temas

Pregunta: devuelva el número de pedido de todos los pedidos cuya cantidad total de pedido no sea inferior a 100

Descripción: escriba una declaración SQL para devolver todos los números de pedido cuya cantidad total de pedido no sea inferior a 100. El resultado final se ordena en orden ascendente por número de pedido.

(2) Nivel de dificultad

Nivel de dificultad: medio

(3) Ejemplo

输入:

DROP TABLE IF EXISTS `OrderItems`;
CREATE TABLE IF NOT EXISTS `OrderItems`(
	order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',
	quantity INT(255) NOT NULL COMMENT '商品数量'
);
INSERT `OrderItems` VALUES ('a1',105),('a2',200),('a4',1121),('a5',10),('a7',5);

输出:

a1
a2
a4

(4) Código

SELECT order_num
FROM OrderItems
GROUP BY order_num
HAVING SUM(quantity) >= 100
ORDER BY order_num

(5) Captura de pantalla en ejecución

4. Cepillo Pregunta 4

(1) Temas

Tema: Calcular la suma

Descripción: escriba una declaración SQL, agregue según el número de pedido, devuelva todos los números de pedido cuyo precio total de pedido no sea inferior a 1000 y ordene el resultado final en orden ascendente por número de pedido. Pista: precio total = item_price multiplicado por cantidad

(2) Nivel de dificultad

Nivel de dificultad: medio

(3) 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 ('a1',10,105),('a2',1,1100),('a2',1,200),('a4',2,1121),('a5',5,10),('a2',1,19),('a7',7,5);

输出:

a1|1050.000
a2|1319.000
a4|2242.000

(4) Código

select order_num,sum(item_price*quantity) total_price from OrderItems
group by order_num
having total_price>=1000
order by order_num

(5) Captura de pantalla en ejecución

5. Cepillo Pregunta 5

(1) Temas

Asunto: Corrección de errores 3

Descripción : Ejecutar después de modificar correctamente el siguiente código

SELECT order_num, COUNT(*) AS items 
FROM OrderItems 
GROUP BY items 
HAVING COUNT(*) >= 3 
ORDER BY items, order_num;

(2) Nivel de dificultad

Nivel de dificultad: fácil

(3) Ejemplo

输入:

DROP TABLE IF EXISTS `OrderItems`;
CREATE TABLE IF NOT EXISTS `OrderItems`(
	order_num VARCHAR(255) NOT NULL COMMENT '商品订单号'
);
INSERT `OrderItems` VALUES ('a002'),('a002'),('a002'),('a004'),('a007');

输出:

a002|3

(4) Código

SELECT order_num, COUNT(*) AS items 
FROM OrderItems 
GROUP BY order_num 
HAVING items >= 3 
ORDER BY items, order_num;

(5) Captura de pantalla en ejecución

3. Resumen

¡Este artículo es el decimotercer día de una serie de preguntas de ensayo de MySQL!

Bienvenidos amigos a juntar las preguntas, haga clic en el enlace a la derecha ------ red de preguntas de cepillo

Supongo que te gusta

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