SQL - Agrupar campos repetidos mysql

 
Vista:
sin imagen de perfil

Agrupar campos repetidos mysql

Publicado por jose (7 intervenciones) el 23/01/2017 23:33:13
Hola, he llegado a la parte final de un ejercicio en la que debo ordenar los datos según la cantidad de veces que se repiten en codOficina, y no soy capaz de hacerlo, agradezco la ayuda.

El problema dice asi:

Obtener el nombre del comercial y la suma del precio por la cantidad vendida agrupados por el nombre del comercial de aquellos que pertenezcan a una oficina donde haya más de un comercial trabajando ordenados por el total de forma descendente.

Ya lo tengo todo hecho solo me falta la parte final, ordenarlos por el total de forma descendente:

1
2
3
4
5
6
7
8
9
10
SELECT comerciales.nombre, productos.precio, vender.cantidad, comerciales.codOficina,
precio * cantidad AS Precio_cant
 
FROM comerciales
 
INNER JOIN vender ON(comerciales.codigo=vender.codComercial)
INNER JOIN productos ON(productos.referencia=vender.refProducto)
WHERE codOficina IN( SELECT codOficina FROM comerciales GROUP BY codOficina HAVING count(*)>1 )
 
GROUP BY nombre;



El Script es:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
ROP SCHEMA IF EXISTS TAREA4;
CREATE SCHEMA IF NOT EXISTS TAREA4 DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci;
USE TAREA4;
 
 
create table if not exists Oficinas (
	codigo		char(3) primary key,
	direccion	varchar(50) not null,
	localidad	varchar(50) not null,
	provincia	varchar(20)
);
create table if not exists Vehiculos (
	matricula	char(7) primary key,
	marca		varchar(20) not null,
	modelo		varchar(20),
	nKilometros	integer(8) not null,
	fRevision	date
);
 
 
create table if not exists Comerciales (
	codigo		char(3) primary key,
	nombre		varchar(30) not null,
	salario		float(6,2) not null,
	hijos		integer(2) not null,
	fNacimiento	date not null,
	codOficina	char(3),
	vehiculoAsig char(7),
    constraint com_ofi_fk foreign key (codOficina) references Oficinas(codigo) on delete set null,
    constraint com_veh_fk foreign key (vehiculoAsig) references Vehiculos(matricula) on delete set null
);
 
create table if not exists Productos (
	referencia		char(6) primary key,
	nombre		varchar(20) not null,
	descripcion	text(1000),
	precio		float(6,2) not null,
	descuento		float(2,0) not null
);
 
create table if not exists Vender (
	codComercial char(3),
	refProducto	 char(6),
	cantidad	 integer(6),
	fecha		 date,
	primary key (codComercial, refProducto, fecha),
	foreign key (codComercial) references Comerciales(codigo) on delete restrict,
	foreign key (refProducto) references Productos(referencia) on delete restrict
);
 
insert into Oficinas values ('101','Avda. Carlos III, 23' ,'Aguadulce','Almería');
insert into Oficinas values ('202','Avda Servero Ochoa, 33' ,'Marbella','Málaga');
insert into Oficinas values ('303','Avda. de Arcos, 43' ,'Jerez de la Frontera','Cádiz');
insert into Oficinas values ('404','Avda. de Lisboa, 53' ,'Andújar','Jaén');
 
insert into Vehiculos values ('0101BCD', 'Peugeot', '206', 110022, '2011/12/24');
insert into Vehiculos values ('0202CBD', 'Opel', 'Corsa', 80999, '2011/12/12');
insert into Vehiculos values ('0303DFD', 'Toyota', 'Auris', 101200, '2010/02/01');
insert into Vehiculos values ('0404FDF', 'Toyota', 'Corolla', 58230, '2011/11/20');
insert into Vehiculos values ('0505GHG', 'Renault', 'Laguna', 12234, '2012/12/04');
insert into Vehiculos values ('0606DFD', 'Renault', 'Clio', 148023, '2010/12/01');
insert into Vehiculos values ('0707BDF', 'Renault', 'Clio', 133012, '2010/10/15');
insert into Vehiculos values ('0808GGH', 'Seat', 'Ibiza', 45023, '2011/10/13');
insert into Vehiculos values ('0909DDL', 'Seat', 'Leon', 99283, '2010/03/20');
 
insert into Comerciales values ('111','Pedro Alonso Jiménez',1200.50,0,'1960/02/01','101','0101BCD');
insert into Comerciales values ('222','Julia Pérez Arribas',1305.75,1,'1971/12/11','101','0202CBD');
insert into Comerciales values ('333','Juan Lozano Gómez',1080.25,3,'1975/08/21','202','0303DFD');
insert into Comerciales values ('444','Sandra Molina Sánchez',1120.00,2,'1969/05/09','303','0404FDF');
insert into Comerciales values ('555','Salvador Beltrán Jiménez',975.50,0,'1980/10/11','303','0505GHG');
insert into Comerciales values ('666','Beatriz Martín Gutiérrez',1175.00,1,'1970/11/06','404','0606DFD');
insert into Comerciales values ('777','Eduardo Martínez Puig',1100.50,2,'1967/01/16','101','0707BDF');
insert into Comerciales values ('888','Juan Antonio Ochando Serrano',1000.50,0,'1982/03/03','202','0808GGH');
insert into Comerciales values ('999','Marina Pérez Blanco',1070.20,3,'1972/07/21','303','0909DDL');
 
 
insert into Productos values ('AC0001', 'Abrigo Caballero', 'Piel Color Marrón',  120.50, 15);
insert into Productos values ('AS0001', 'Abrigo Señora', 'Piel Color Marrón',  110.75, 25);
insert into Productos values ('CC0001', 'Camisa Caballero', 'Cuadros',  35.99, 10);
insert into Productos values ('PC0001', 'Pantalón Caballero', 'Vaquero',  34.90, 35);
insert into Productos values ('PC0002', 'Pantalón Caballero', 'Pana',  25.90, 0);
insert into Productos values ('AC0002', 'Abrigo Caballero', 'Piel Color Negro',  120.50, 15);
insert into Productos values ('CC0002', 'Camisa Caballero', 'Lisa Color Blanco',  35.99, 10);
insert into Productos values ('CC0003', 'Camisa Caballero', 'Lisa Color Azul',  35.99, 10);
insert into Productos values ('AS0002', 'Abrigo Señora', 'Piel Color Negro',  120.75, 15);
insert into Productos values ('AS0003', 'Abrigo Señora', 'Ante  Color Marrón',  90.95, 35);
insert into Productos values ('PS0001', 'Pantalón Señora', 'Vaquero',  30.90, 30);
insert into Productos values ('PS0002', 'Pantalón Señora', 'Lino',  39.90, 40);
 
 
insert into Vender values ('111','PC0001',24,'2011/10/10');
insert into Vender values ('111','PC0002',48,'2011/03/22');
insert into Vender values ('111','CC0001',20,'2011/09/01');
insert into Vender values ('111','AS0001',12,'2011/10/03');
insert into Vender values ('222','AS0001',34,'2011/01/22');
insert into Vender values ('222','AC0001',60,'2011/09/06');
insert into Vender values ('222','AS0002',21,'2011/11/10');
insert into Vender values ('333','AC0001',15,'2011/02/18');
insert into Vender values ('333','AC0002',80,'2011/02/09');
insert into Vender values ('333','AC0002',12,'2011/02/23');
insert into Vender values ('333','CC0003',45,'2011/06/17');
insert into Vender values ('333','CC0003',10,'2011/06/09');
insert into Vender values ('444','CC0001',75,'2011/06/08');
insert into Vender values ('444','PC0001',60,'2011/01/19');
insert into Vender values ('555','PC0002',35,'2011/02/02');
insert into Vender values ('555','PS0001',23,'2011/02/28');
insert into Vender values ('555','CC0002',67,'2011/05/25');
insert into Vender values ('666','CC0002',21,'2011/05/11');
insert into Vender values ('666','AS0003',23,'2011/04/16');
insert into Vender values ('666','CC0001',33,'2011/04/18');
insert into Vender values ('666','CC0001',50,'2011/03/11');
insert into Vender values ('666','CC0002',78,'2011/03/02');
insert into Vender values ('777','AC0002',39,'2011/03/07');
insert into Vender values ('777','AS0003',18,'2011/05/11');
insert into Vender values ('888','AS0002',55,'2011/03/19');
insert into Vender values ('888','PC0001',78,'2011/06/20');
insert into Vender values ('888','PS0002',33,'2011/04/10');
insert into Vender values ('888','PC0002',76,'2011/02/01');
insert into Vender values ('888','CC0003',50,'2011/01/30');
insert into Vender values ('999','AS0003',60,'2011/01/30');
insert into Vender values ('999','AC0002',47,'2011/03/31');
insert into Vender values ('999','PC0001',80,'2011/03/22');
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Manuel
Val: 67
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Agrupar campos repetidos mysql

Publicado por Manuel (29 intervenciones) el 10/02/2017 19:32:50
Solo tienes que meter un ORDER BY DESC Precio_Cant al final, con eso ordenará en forma descendente (el mayor primero) por ese campo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Agrupar campos repetidos mysql

Publicado por jose (7 intervenciones) el 10/02/2017 19:43:47
Gracias por la ayuda Manuel!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Manuel
Val: 67
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Agrupar campos repetidos mysql

Publicado por Manuel (29 intervenciones) el 15/02/2017 16:24:25
Un placer ayudar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar