Hola Efrain Diaz:
Create Table dbo.creditos
(
fecha_dia Date
, codigo_clase VarChar(10)
, cant Int
, nota char(1)
, hp Int
, creditos Int
, termino Int
);
Go
Insert into dbo.Creditos
(Fecha_dia , Codigo_clase , Cant , Nota , HP , Creditos , termino )
values
('2020-08-03','ANAT 100',1,'B',12, 4,1901),
('2020-08-03','COMP 208',1,'B',9, 3,1901),
('2020-08-03','ENFE 102',1,'D',2, 2,1901),
('2020-08-03','ENFE 101',1,'B',9, 3,1901),
('2020-08-03','ENFE 100',1,'B',9, 3,1901),
('2020-10-27','ANAT 100',2,'C',8, 4,1910),
('2020-10-27','ENFE 104',1,'B',6, 2,1910);
go
Con el escenario, utilizamos una tabla de expresión común para eliminar la fila ANAT 100 de Cant = 1
Y con la salida del conjunto ya sumamos los valores para la columna de hp y créditos, para realizar la operación.
protegemos la misma contra la división entre 0.
With cte
As (Select codigo_clase
, Max(cant) As mxcant
From dbo.creditos
Group By codigo_clase)
Select Sum(creditos.hp) As hp
, Sum(creditos.creditos) As creditos
, Cast(Sum(creditos.hp) * 1.0 / Case
When Sum(creditos.creditos) = 0 Then 1
Else Sum(creditos.creditos) * 1.0
End As Decimal(5, 2)) As promedio
From cte
Inner Join dbo.creditos On creditos.codigo_clase = cte.codigo_clase And creditos.cant = cte.mxcant;
Cte
https://javifer2.wordpress.com/2018/12/18/with-cte-tablas-de-expresion-comun-1/