Problemas com UNION

2 respostas
T

Senhores,

Boa tarde.

Estou executando a seguinte query:

SELECT * FROM   
(   
 SELECT age_aqua_status as n, count(*) FROM agen_aqua group by n   
 UNION   
 SELECT age_clinica_status as n, count(*) FROM agen_clinica group by n   
 UNION   
 SELECT age_fono_status as n, count(*) FROM agen_fono group by n   
 UNION   
 SELECT age_mot_status as n, count(*) FROM agen_motora group by n   
 UNION   
 SELECT age_nutri_status as n, count(*) FROM agen_nutri group by n   
 UNION   
 SELECT age_pedago_status as n, count(*) FROM agen_pedago group by n   
 UNION   
 SELECT age_resp_status as n, count(*) FROM agen_resp group by n   
 UNION   
 SELECT age_to_status as n, count(*) FROM agen_to group by n   
)drv;

E tenho o seguinte retorno:
n | count(*)

1 | 2603

2 | 117

3 | 47

4 | 38

5 | 3

6 | 13

9 | 64

10 | 2

11 | 4

12 | 2

13 | 6

15 | 2

16 | 190

18 | 377

19 | 112

20 | 1

22 | 10

25 | 10

26 | 8

27 | 8

28 | 76

29 | 19

30 | 7

33 | 45

34 | 1

37 | 69

38 | 2

41 | 4

42 | 23

43 | 25

44 | 31

45 | 61

1 | 714

2 | 10

9 | 1

44 | 3

45 | 2

1 | 1123

2 | 82

4 | 15

5 | 2

9 | 19

12 | 6

13 | 1

38 | 1

40 | 9

44 | 9

45 | 28

1
1

2 | 292

3 | 1

4 | 98

5 | 14

9 | 175

10 | 10

11 | 20

13 | 5

26 | 1

43 | 6

44 | 66

45 | 148

46 | 1

47 | 3

1 | 772

2 | 22

4 | 9

9 | 9

10 | 1

12 | 1

13 | 2

29 | 2

45 | 13

1 | 6832

2 | 203

4 | 76

9 | 102

10 | 8

11 | 19

44 | 60

45 | 117

1 | 3838

2 | 218

4 | 46

5 | 11

6 | 1

9 | 68

10 | 6

11 | 13

13 | 13

14 | 1

45 | 87

1 | 3529

2 | 119

9 | 92

10 | 4

11 | 10

44 | 28

45 | 74

No resultato acima eu tenho 8 linhas onde o n é igual a 1 e gostaria do seguinte retorno, que as 8 viessem agrupadas com seus respectivos valores somados.

E que isso ocorresse para todas as linhas onde houvesse o mesmo valor para n.

Alguem poderia me ajudar com isso, ou então me informar se existe um método melhor para desenvolver esta query.

Grato

Tiago Dantas

2 Respostas

bombbr
SELECT drv.n, SUM(drv.total) FROM     
 (     
 SELECT age_aqua_status as n, count(*) as total FROM agen_aqua group by n     
 UNION ALL     
 SELECT age_clinica_status as n, count(*) as total  FROM agen_clinica group by n     
 UNION  ALL     
 SELECT age_fono_status as n, count(*) as total  FROM agen_fono group by n     
 UNION  ALL    
 SELECT age_mot_status as n, count(*)  as total FROM agen_motora group by n     
 UNION  ALL    
 SELECT age_nutri_status as n, count(*)  as total FROM agen_nutri group by n     
 UNION  ALL    
 SELECT age_pedago_status as n, count(*)  as total FROM agen_pedago group by n     
 UNION  ALL    
 SELECT age_resp_status as n, count(*)  as total FROM agen_resp group by n     
 UNION  ALL    
 SELECT age_to_status as n, count(*)  as total FROM agen_to group by n     
 ) drv
grupo by drv.n
T

Amigo,

Boa tarde.

Muito obrigado pela ajuda.

Abraço

Tiago Dantas

Criado 4 de agosto de 2010
Ultima resposta 4 de ago. de 2010
Respostas 2
Participantes 2