MySQL - Consultar los municipios que tengan en su población más de 2 mujeres

 
Vista:
sin imagen de perfil

Consultar los municipios que tengan en su población más de 2 mujeres

Publicado por andyman (2 intervenciones) el 27/04/2015 23:17:26

Amigos necesito ayuda para sacar esta consulta tengo las siguientes tablas




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
CREATE TABLE  genero (
gen_cod bigint NOT NULL,
  gen_desc varchar(200) DEFAULT NULL
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
 
INSERT INTO genero (gen_cod, gen_desc) VALUES
(1, 'Masculino'),
(2, 'Femenino'),
(3, 'otro');
 
 
CREATE TABLE  municipio (
mun_cod bigint NOT NULL,
  mun_nombre varchar(200) DEFAULT NULL,
  nro_habitantes bigint DEFAULT NULL,
  mun_pais_id bigint NOT NULL
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
 
 
INSERT INTO municipio (mun_cod, mun_nombre, nro_habitantes, mun_pais_id) VALUES
(1, 'Cundinamarca', 3000000, 1),
(4, 'Atlantico', 600000, 1),
(5, 'Antioquia', 800000, 1),
(6, 'San Isidro', 650000, 2),
(7, 'Cusco', 700000, 2),
(8, 'Gualaceo', 400000, 3),
(9, 'Guamote', 700000, 3);
 
CREATE TABLE IF NOT EXISTS `persona` (
`per_cod` bigint(20) NOT NULL,
  `per_cedula` varchar(200) NOT NULL,
  `per_nombre1` varchar(200) CHARACTER SET latin1 DEFAULT NULL,
  `per_nombre2` varchar(200) CHARACTER SET latin1 DEFAULT NULL,
  `per_apellido1` varchar(200) CHARACTER SET latin1 DEFAULT NULL,
  `per_apellido2` varchar(200) CHARACTER SET latin1 DEFAULT NULL,
  `per_doc_id` bigint(20) NOT NULL,
  `per_tipo_id` bigint(20) NOT NULL,
  `per_gen_id` bigint(20) NOT NULL,
  `per_mun_id` bigint(20) NOT NULL
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;
 
INSERT INTO `persona` (`per_cod`, `per_cedula`, `per_nombre1`, `per_nombre2`, `per_apellido1`, `per_apellido2`, `per_doc_id`, `per_tipo_id`, `per_gen_id`, `per_mun_id`) VALUES
(1, '101010', 'Camilo', 'Javier', 'Gonzales ', 'Diaz', 1, 1, 1, 1),
(2, 'e10112', 'Adriana', 'Lucia', 'Pereira ', 'Daza', 5, 1, 2, 4),
(3, '881001557854648', 'Santiago', 'Nilson', 'Neira ', 'Fernandez', 2, 1, 1, 5),
(4, '809162559-4', 'Saria', ' S.A.S.', '  ', ' ', 6, 2, 3, 5),
(5, '54483354', 'Ximena', 'Camila', 'Fray ', 'Donato', 5, 1, 2, 5),
(6, '448944563', 'Tarcicio', 'Inag', 'Foreh', 'Izuma', 1, 1, 1, 9),
(7, '88445336-4', 'Inadisa', 'S.A.S.', 'Entidad', 'privada', 6, 2, 3, 8),
(8, '144533987', 'Juliana', 'Andrea', 'Montalvo', 'Prada', 5, 1, 2, 7),
(9, '88455678-5', 'Bavaria', 'Sab ', 'Miller', 'Colombia', 6, 2, 3, 1),
(10, '904457866-4', 'Auteco', 'comercializadora', 'de motos', 'Cartagena', 6, 2, 3, 4),
(11, '45887866-4', 'Baloto', 'Rifas juegos y espectaculos', 'financiera', 'NIP', 6, 2, 3, 1),
(12, '10155521-4', 'Goodyear', 'Sede Bogota', 'Colombia', '1', 6, 2, 3, 1),
(13, '35454845', 'Maria', 'Camila', 'Blanco', 'Frix', 3, 1, 2, 5);


y tengo esta consulta

1
2
3
4
5
6
7
8
9
10
11
select muni.mun_nombre Municipio,count(1) 'cantidad de mujeres'
from
municipio muni,persona pers,genero gen
where
pers.per_gen_id=gen_cod
and
gen.gen_desc like '%femenino%'
and
pers.per_mun_id=muni.mun_cod
group by
muni.mun_nombre

la cual me dice cuantas mujeres hay en cada uno de los municipios sin embargo necesito que me muestre solamente cuando hay mas de 2 pero no he podido darle esa condicional

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 xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Consultar los municipios que tengan en su población más de 2 mujeres

Publicado por xve (1151 intervenciones) el 28/04/2015 10:25:15
Hola, haber si te sirve este código...

1
2
3
4
5
6
7
8
9
10
11
12
13
select * from
(
    select muni.mun_nombre as Municipio,count(1) as CantidadDeMujeres
 
    from municipio muni,persona pers,genero gen
 
    where pers.per_gen_id=gen_cod and gen.gen_desc like '%femenino%' and pers.per_mun_id=muni.mun_cod
 
    group by muni.mun_nombre
 
) s1
 
WHERE s1.CantidadDeMujeres>2

te he modificado el nombre, ya que con espacios, no se que tal funcionaria.

Coméntanos si te sirve, ok?
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 SuperIndio
Val: 102
Bronce
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

Consultar los municipios que tengan en su población más de 2 mujeres

Publicado por SuperIndio (79 intervenciones) el 28/04/2015 15:47:31
Ahi va

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
CREATE TABLE  genero (
gen_cod                 SmallInt       NOT NULL ,
gen_desc                Varchar(80)    NOT NULL,
PRIMARY KEY( gen_cod ) );
 
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 01, 'Masculino');
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 02, 'Femenino');
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 04, 'trolo');
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 05, 'tragasable');
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 06, 'trolin') ;
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 07, 'putito') ;
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 08, 'putazo') ;
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 09, 'torta')  ;
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 10, 'carolo') ;
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 11, 'mariposon') ;
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 12, 'tragasable') ;
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 13, 'oruga') ;
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 14, 'apludidora') ;
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 15, 'amermelado') ;
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 16, 'afrancesado');
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 17, 'bufarron') ;
INSERT INTO genero (gen_cod, gen_desc) VALUES ( 18, 'comilon') ;
 
 
 
CREATE TABLE  municipio (
mun_cod                 Integer(08)    NOT NULL ,
mun_nombre              Varchar(80)    NOT NULL ,
nro_habitantes          integer(08)    NOT NULL ,
mun_pais_id             INTEGER(08)    NOT NULL ,
Primary Key( mun_cod ) ) ;
 
INSERT INTO municipio (mun_cod, mun_nombre, nro_habitantes, mun_pais_id) VALUES (1, 'Cundinamarca', 3000000, 1);
INSERT INTO municipio (mun_cod, mun_nombre, nro_habitantes, mun_pais_id) VALUES (4, 'Atlantico', 600000, 1);
INSERT INTO municipio (mun_cod, mun_nombre, nro_habitantes, mun_pais_id) VALUES (5, 'Antioquia', 800000, 1);
INSERT INTO municipio (mun_cod, mun_nombre, nro_habitantes, mun_pais_id) VALUES (6, 'San Isidro', 650000, 2);
INSERT INTO municipio (mun_cod, mun_nombre, nro_habitantes, mun_pais_id) VALUES (7, 'Cusco', 700000, 2);
INSERT INTO municipio (mun_cod, mun_nombre, nro_habitantes, mun_pais_id) VALUES (8, 'Gualaceo', 400000, 3);
INSERT INTO municipio (mun_cod, mun_nombre, nro_habitantes, mun_pais_id) VALUES (9, 'Guamote', 700000, 3);
 
 
CREATE TABLE IF NOT EXISTS `persona` (
`per_cod`               Integer(08) NOT NULL ,
`per_cedula`            Varchar(80) NOT NULL ,
`per_nombre1`           Varchar(80) NOT NULL ,
`per_nombre2`           Varchar(80) NOT NULL ,
`per_apellido1`         Varchar(80) NOT NULL ,
`per_apellido2`         Varchar(80) NOT NULL ,
`per_doc_id`            Integer(08) NOT NULL ,
`per_tipo_id`           Integer(08) NOT NULL ,
`per_gen_id`            Integer(08) NOT NULL ,
`per_mun_id`            Integer(08) NOT NULL ) ;
 
 
INSERT INTO `persona` (`per_cod`, `per_cedula`, `per_nombre1`, `per_nombre2`, `per_apellido1`, `per_apellido2`, `per_doc_id`, `per_tipo_id`, `per_gen_id`, `per_mun_id`) VALUES (1, '101010', 'Camilo', 'Javier', 'Gonzales ', 'Diaz', 1, 1, 1, 1);
INSERT INTO `persona` (`per_cod`, `per_cedula`, `per_nombre1`, `per_nombre2`, `per_apellido1`, `per_apellido2`, `per_doc_id`, `per_tipo_id`, `per_gen_id`, `per_mun_id`) VALUES (2, 'e10112', 'Adriana', 'Lucia', 'Pereira ', 'Daza', 5, 1, 2, 4);
INSERT INTO `persona` (`per_cod`, `per_cedula`, `per_nombre1`, `per_nombre2`, `per_apellido1`, `per_apellido2`, `per_doc_id`, `per_tipo_id`, `per_gen_id`, `per_mun_id`) VALUES (3, '881001557854648', 'Santiago', 'Nilson', 'Neira ', 'Fernandez', 2, 1, 1, 5);
INSERT INTO `persona` (`per_cod`, `per_cedula`, `per_nombre1`, `per_nombre2`, `per_apellido1`, `per_apellido2`, `per_doc_id`, `per_tipo_id`, `per_gen_id`, `per_mun_id`) VALUES (4, '809162559-4', 'Saria', ' S.A.S.', '  ', ' ', 6, 2, 3, 5);
INSERT INTO `persona` (`per_cod`, `per_cedula`, `per_nombre1`, `per_nombre2`, `per_apellido1`, `per_apellido2`, `per_doc_id`, `per_tipo_id`, `per_gen_id`, `per_mun_id`) VALUES (5, '54483354', 'Ximena', 'Camila', 'Fray ', 'Donato', 5, 1, 2, 5);
INSERT INTO `persona` (`per_cod`, `per_cedula`, `per_nombre1`, `per_nombre2`, `per_apellido1`, `per_apellido2`, `per_doc_id`, `per_tipo_id`, `per_gen_id`, `per_mun_id`) VALUES (6, '448944563', 'Tarcicio', 'Inag', 'Foreh', 'Izuma', 1, 1, 1, 9);
INSERT INTO `persona` (`per_cod`, `per_cedula`, `per_nombre1`, `per_nombre2`, `per_apellido1`, `per_apellido2`, `per_doc_id`, `per_tipo_id`, `per_gen_id`, `per_mun_id`) VALUES (7, '88445336-4', 'Inadisa', 'S.A.S.', 'Entidad', 'privada', 6, 2, 3, 8);
INSERT INTO `persona` (`per_cod`, `per_cedula`, `per_nombre1`, `per_nombre2`, `per_apellido1`, `per_apellido2`, `per_doc_id`, `per_tipo_id`, `per_gen_id`, `per_mun_id`) VALUES (8, '144533987', 'Juliana', 'Andrea', 'Montalvo', 'Prada', 5, 1, 2, 7);
INSERT INTO `persona` (`per_cod`, `per_cedula`, `per_nombre1`, `per_nombre2`, `per_apellido1`, `per_apellido2`, `per_doc_id`, `per_tipo_id`, `per_gen_id`, `per_mun_id`) VALUES (9, '88455678-5', 'Bavaria', 'Sab ', 'Miller', 'Colombia', 6, 2, 3, 1);
INSERT INTO `persona` (`per_cod`, `per_cedula`, `per_nombre1`, `per_nombre2`, `per_apellido1`, `per_apellido2`, `per_doc_id`, `per_tipo_id`, `per_gen_id`, `per_mun_id`) VALUES (10, '904457866-4', 'Auteco', 'comercializadora', 'de motos', 'Cartagena', 6, 2, 3, 4);
INSERT INTO `persona` (`per_cod`, `per_cedula`, `per_nombre1`, `per_nombre2`, `per_apellido1`, `per_apellido2`, `per_doc_id`, `per_tipo_id`, `per_gen_id`, `per_mun_id`) VALUES (11, '45887866-4', 'Baloto', 'Rifas juegos y espectaculos', 'financiera', 'NIP', 6, 2, 3, 1);
INSERT INTO `persona` (`per_cod`, `per_cedula`, `per_nombre1`, `per_nombre2`, `per_apellido1`, `per_apellido2`, `per_doc_id`, `per_tipo_id`, `per_gen_id`, `per_mun_id`) VALUES (12, '10155521-4', 'Goodyear', 'Sede Bogota', 'Colombia', '1', 6, 2, 3, 1);
INSERT INTO `persona` (`per_cod`, `per_cedula`, `per_nombre1`, `per_nombre2`, `per_apellido1`, `per_apellido2`, `per_doc_id`, `per_tipo_id`, `per_gen_id`, `per_mun_id`) VALUES (13, '35454845', 'Maria', 'Camila', 'Blanco', 'Frix', 3, 1, 2, 5);
 
 
select A.mun_nombre, count(*) "Cantidad"
  from municipio A ,
       persona   B
 where A.mun_cod    =  B.per_mun_id
   And B.per_gen_id IN (SELECT distinct gen_cod FROM Genero Where gen_desc like '%femenino%' )
 Group by A.mun_cod, B.per_mun_id, A.mun_nombre


lo probe en SQLITE y funciona..
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
sin imagen de perfil

Consultar los municipios que tengan en su población más de 2 mujeres

Publicado por andyman (2 intervenciones) el 29/04/2015 00:04:43
amigos ya pude, solo era ponerle un having quedaría así

1
2
3
4
5
6
7
select A.mun_nombre, count(*) "Cantidad"
  from municipio A ,
       persona   B
 where A.mun_cod    =  B.per_mun_id
   And B.per_gen_id IN (SELECT distinct gen_cod FROM Genero Where gen_desc like '%femenino%' )
 Group by A.mun_cod, B.per_mun_id, A.mun_nombre
having count(1)>1
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