Oracle - Duda con una consulta en Oracle

 
Vista:
sin imagen de perfil

Duda con una consulta en Oracle

Publicado por Gianfranco (1 intervención) el 21/01/2016 00:15:12
Buenas tardes, tengo el siguiente problema con una consulta y necesito su ayuda.

Tengo la siguiente tabla:

Año Pais Club Personas
2010 Francia P1 4
2010 Francia MALAVE 3
2010 Holanda FANTA 2
2010 Holanda COKE 1
2011 Francia P1 4
2011 Francia MALAVE 3
2011 Holanda FANTA 2
2011 Holanda COKE 1
2012 Francia P1 4
2012 Francia MALAVE 3
2012 Holanda FANTA 2
2012 Holanda COKE 1

Necesito hacer una consulta que me diga por pais y por año cual fue el club con la mayor cantidad de personas y su cantidad, por ejemplo

2010 Francia P1 4
2010 Holanda FANTA 2
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

Duda con una consulta en Oracle

Publicado por Luis (235 intervenciones) el 21/01/2016 20:39:23
Hola, una solucion seria algo asi, solo reemplazarias los datos en duro por los campos verdaderos.

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
SELECT F.ANIO, F.PAIS, F.CLUB, F.CANT_PERSONAS
FROM (
SELECT  X. ANIO, X.PAIS, X.CLUB, SUM(X.PERSONAS) CANT_PERSONAS
FROM
(
SELECT
'2010'anio,  'Francia' pais, 'P1' club, 4 personas  FROM dual
UNION
SELECT '2010', 'Francia', 'MALAVE', 3  FROM dual
UNION
SELECT '2010', 'Holanda',  'FANTA',  2 FROM dual
UNION
SELECT '2010', 'Holanda', 'COKE', 1 FROM dual
UNION
SELECT '2011', 'Francia', 'P1', 4 FROM dual
UNION
SELECT '2011', 'Francia', 'MALAVE', 3  FROM dual
UNION
SELECT '2011', 'Holanda', 'FANTA', 2  FROM dual
UNION
SELECT '2011', 'Holanda', 'COKE', 1  FROM dual
UNION
SELECT '2012', 'Francia', 'P1', 4  FROM dual
UNION
SELECT '2012', 'Francia', 'MALAVE', 3  FROM dual
UNION
SELECT '2012', 'Holanda', 'FANTA', 2   FROM dual
UNION
SELECT '2012', 'Holanda', 'COKE', 1  FROM dual ) X
GROUP BY X.ANIO, X.PAIS, X.CLUB ) F
WHERE  EXISTS (
 
SELECT 1  FROM (SELECT Y.ANIO, Y.PAIS, MAX(Y.CANT_PERSONAS ) CANT FROM
(
SELECT  X. ANIO, X.PAIS, X.CLUB, SUM(X.PERSONAS) CANT_PERSONAS
FROM
(
SELECT
'2010'anio,  'Francia' pais, 'P1' club, 4 personas  FROM dual
UNION
SELECT '2010', 'Francia', 'MALAVE', 3  FROM dual
UNION
SELECT '2010', 'Holanda',  'FANTA',  2 FROM dual
UNION
SELECT '2010', 'Holanda', 'COKE', 1 FROM dual
UNION
SELECT '2011', 'Francia', 'P1', 4 FROM dual
UNION
SELECT '2011', 'Francia', 'MALAVE', 3  FROM dual
UNION
SELECT '2011', 'Holanda', 'FANTA', 2  FROM dual
UNION
SELECT '2011', 'Holanda', 'COKE', 1  FROM dual
UNION
SELECT '2012', 'Francia', 'P1', 4  FROM dual
UNION
SELECT '2012', 'Francia', 'MALAVE', 3  FROM dual
UNION
SELECT '2012', 'Holanda', 'FANTA', 2   FROM dual
UNION
SELECT '2012', 'Holanda', 'COKE', 1  FROM dual ) X
GROUP BY X. ANIO, X.PAIS, X.CLUB ) Y
GROUP BY Y.ANIO, Y.PAIS )  H
WHERE H.ANIO = F.ANIO
AND H.PAIS =  F.PAIS
AND H.CANT =  F.CANT_PERSONAS);
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

Duda con una consulta en Oracle

Publicado por Joaquín (2 intervenciones) el 15/12/2016 21:30:49
Amigo es más fácil de esta forma..

SELECT ANO,PAIS,CLUB,SUM(PERSONAS) FROM pais_jsm GROUP BY PAIS,ANO,CLUB
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