SQL distinct with sum

2

Hello, I have a problem making a sum in a query. Query example and results:

select DISTINCT t.ID, t.nomeuc as "Nome UC", 
    t.tipoturno as "Tipo Turno", a.num_presencas as "Número de Presenças"
from ei_sad_proj_gisem.v_aulas_semana a 
    join ei_sad_proj_gisem.v_turnos t on a.turno_ID = t.ID
where turno_ID in (
    select ID 
    from ei_sad_proj_gisem.v_turnos 
    where abrevuc = 'SAD' group by ID);

And I have an output of:

   ID Nome UC                                            Tipo  Número de Presenças
     
   171 Sistemas de Apoio à Decisão                        PL                     13
   149 Sistemas de Apoio à Decisão                        PL                     16
   146 Sistemas de Apoio à Decisão                        PL                     17
   148 Sistemas de Apoio à Decisão                        PL                     14
   151 Sistemas de Apoio à Decisão                        T                      53
   171 Sistemas de Apoio à Decisão                        PL                     14
   151 Sistemas de Apoio à Decisão                        T                      46
   148 Sistemas de Apoio à Decisão                        PL                     16

30 rows selected. 

I want to add the presence amount, however when I add only SUM () I have a ORA-00937: error is not a single-group group role

The code would be as follows:

select DISTINCT t.ID, t.nomeuc as "Nome UC", 
    t.tipoturno as "Tipo Turno", SUM(a.num_presencas) as "Número de Presenças"
from ei_sad_proj_gisem.v_aulas_semana a 
    join ei_sad_proj_gisem.v_turnos t on a.turno_ID = t.ID
where turno_ID in (
    select ID 
    from ei_sad_proj_gisem.v_turnos 
    where abrevuc = 'SAD' group by ID);
    
asked by anonymous 03.11.2017 / 22:06

1 answer

5

I think that only group by is missing in the first query, and you can not use the ID, of course, if not, it will not add

select 
t.nomeuc as "Nome UC", 
t.tipoturno as "Tipo Turno", 
SUM(a.num_presencas) as "Número de Presenças"
from ei_sad_proj_gisem.v_aulas_semana a 
join ei_sad_proj_gisem.v_turnos t on a.turno_ID = t.ID
where turno_ID in (
    select ID 
    from ei_sad_proj_gisem.v_turnos 
    where abrevuc = 'SAD' group by ID)
group by t.ID, t.nomeuc, t.tipoturno;
    
03.11.2017 / 22:12