Consulta sql para obtener el cliente que ha realizado el mayor número de pedidos
Publicado por robiok (6 intervenciones) el 20/01/2021 20:44:18
La consulta a obtener es la siguiente:
Obtener el cliente que ha realizado el mayor número de pedidos. Listar codcliente y número pedidos.
Mis tablas son las siguientes:
He intentado hacer la consulta de esta manera, pero no me sale bien y me da error:
Obtener el cliente que ha realizado el mayor número de pedidos. Listar codcliente y número pedidos.
Mis tablas son las siguientes:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
CREATE TABLE Cliente
( cod_cliente INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
nombre CHAR(20) NOT NULL,
direccion VARCHAR(150) NOT NULL,
email VARCHAR(60) NOT NULL UNIQUE,
fechaalta date DEFAULT NOW(),
telefono VARCHAR(9) NOT NULL,
ciudad VARCHAR(10) NOT NULL,
CP VARCHAR(6) NOT NULL,
Observaciones VARCHAR(200)
);
CREATE TABLE articulos
( codart INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
descripcion VARCHAR(100) NOT NULL,
precio DECIMAL(4,2) NOT NULL,
stock INT NOT NULL,
CHECK (stock>=0)
);
CREATE TABLE pedido
( id_pedido INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
cod_cliente INT NOT NULL,
fechapedido DATE NOT NULL,
entregado ENUM('S', 'N') DEFAULT 'N' NOT NULL,
FOREIGN KEY(cod_cliente) REFERENCES cliente(cod_cliente) ON DELETE CASCADE
);
CREATE TABLE LineasPedido
( id_pedido INT NOT NULL,
num_linea INT NOT NULL,
codart INT NOT NULL,
unidades INT NOT NULL,
PRIMARY KEY(id_pedido, num_linea),
FOREIGN KEY(id_pedido) REFERENCES pedido(id_pedido) ON DELETE CASCADE,
FOREIGN KEY(codart) REFERENCES articulos(codart) ON DELETE CASCADE
);
He intentado hacer la consulta de esta manera, pero no me sale bien y me da error:
1
2
3
4
SELECT cliente.nombre, MAX(SUM(lineaspedido.unidades)) "Pedidos"
FROM cliente, pedido, lineaspedido
WHERE cliente.cod_cliente = pedido.cod_cliente AND pedido.id_pedido = lineaspedido.id_pedido
GROUP BY cliente.nombre;
Valora esta pregunta


0