Sacar promedio en select

06/04/2005 - 14:38 por Matías | Informe spam
Hola grupo, tengo el siguiente sp en el cual saco los promedios de las
etapas 1 y 2:

SELECT M.Nombre AS Materia, N.IDEtapa,
CASE WHEN N.IDEtapa = 1 or N.IDEtapa= 2 THEN ROUND(AVG(N.Nota+.0),2) ELSE 0
END AS Promedio
FROM NOTAS N
INNER JOIN Materias M ON N.IDMateria = M.IDMateria
WHERE N.IDAlumno = @IdAlumno AND (N.IDEtapa = 1 or N.IDEtapa = 2)
AND DATEPART(yyyy, N.FechaExamen) = DATEPART(yyyy, GETDATE())
GROUP BY M.Nombre, N.IDEtapa
ORDER BY M.Nombre, N.IDEtapa

Devuelve:

Materia IdEtapa Promedio
BIOLOGÍA I 1 6.33
BIOLOGÍA I 2 7.50
HISTORIA I 1 6.00
HISTORIA I 2 4.33
DIBUJO I 1 7.00
EDUCACIÓN FÍSICA I 1 7.50

Y yo quiero que devuelva lo mismo pero con un promedio FINAL ( o sea por ej
para Biologia (6.33+7.50)/2=6.92 )

Materia IdEtapa Promedio PromedioFINAL
BIOLOGÍA I 1 6.33 6.92
BIOLOGÍA I 2 7.50 6.92
HISTORIA I 1 6.00 5.16
HISTORIA I 2 4.33 5.16
DIBUJO I 1 7.00 7.00
EDUCACIÓN FÍSICA I 1 7.50 7.50

Como puedo hacer esto, ademas tengo que tener en cuenta que puede haber
promedio para una sola etapa.
Saludos y gracias

Las tablas son:

NOTAS MATERIAS
-
IdAlumno IdMateria
IdMateria Nombre
IdEtapa
Curso
Orden
Nota
FechaExamen

Preguntas similare

Leer las respuestas

#6 Matías
06/04/2005 - 18:49 | Informe spam
OK, gracias

"Alejandro Mesa" escribió en el
mensaje news:
Matías,

Verdad que no soy ducho en eso de hacer valer la gramatica. SELECT es una
sentencia, por lo que inmagino que cuando escribimos rapido olvidamos


decirlo
y ponemos "la select" en vez de "la sentencia select". Si vemos la palabra
como un sustantivo independiente entonces como que deberia ser genero
masculino y decimos "el select". Eso creo.


AMB

"Matías" wrote:

> Ok, Alejandro, no tomé a mal lo que pusiste, simplemente preguntaba para
> desburrarme un poco. Ya se para la proxima que data enviar.
> Voy a intentar hacer funcionar mi select tomando como ejemplo el que


hiciste
> sobre la Northwind.
>
> Una cosilla: ya que soy medio novato en este tema, como se dice
> correctamente: "EL select" o "LA select" lo he visto en este foro que lo
> mencionan de las dos formas. A mi me gusta mas "EL select"
>
> Saludos y gracias
>
> "Alejandro Mesa" escribió en


el
> mensaje news:
> > Matías,
> >
> > No tomes a mal lo dicho. Cuando dije data de ejemplo me referi a la


data
> que
> > puedo usar para alimentar las tablas y comprobar que el query posteado
> > funciona. Por ejemplo, posteastes esto:
> >
> > Las tablas son:
> >
> > NOTAS MATERIAS
> > -
> > IdAlumno IdMateria
> > IdMateria Nombre
> > IdEtapa
> > Curso
> > Orden
> > Nota
> > FechaExamen
> >
> > pero que hay de los tipos de datos, declaracion de integridad


referencial,
> > etc. Eso, aunque parezca insignificante, es de mucha ayuda para


entender
> el
> > esquema con el que se trabaja. Preferible algo asi como:
> >
> > create table dbo.MATERIAS (
> > IdMateria int not null identity primary key,
> > Nombre varchar(50) not null unique
> > )
> >
> > insert into dbo.MATERIAS (Nombre) values('Materia1')
> > insert into dbo.MATERIAS (Nombre) values('Materia2')
> > ...
> >
> > Eso haria que los que tratan de ayudar no tengan que perder tiempo


creando
> > el esquema y llenandolo con data de ejemplo para poder probar la


solucion
> que
> > se quiere exponer, no crees?
> >
> >
> > AMB
> >
> >
> >
> >
> >
> > "Matías" wrote:
> >
> > > Hola Alejandro, muchas gracias por responder, una pregunta: a que te
> referis
> > > con que no postie(o como se diga) data de ejemplo? . Puse el sp, el
> > > resultado que devuelve, el resultado que me hace falta y las tablas.
> ¿Que
> > > otra data puede faltar?
> > >
> > > Saludos y gracias
> > >
> > > "Alejandro Mesa" escribió


en
> el
> > > mensaje news:
> > > > Matías,
> > > >
> > > > Chequea el operador ROLLUP en los libros en linea. No expongo un
> ejemplo
> > > > relacionado a tu ambiente porque no posteastes data de ejemplo,


asi
> que
> > > usare
> > > > la bd Northwind.
> > > >
> > > > Ejemplo:
> > > >
> sub-total
> > > por
> > > > customer
> > > >
> > > > use northwind
> > > > go
> > > >
> > > > select
> > > > customerid,
> > > > year(orderdate) as [año],
> > > > count(*) as num_de_ordenes
> > > > from
> > > > orders as o
> > > > group by
> > > > customerid,
> > > > year(orderdate) with rollup
> > > > order by
> > > > case when grouping(customerid) = 1 then 1 else 0 end,
> > > > customerid,
> > > > (select max(year(oh.orderdate)) from orders as oh where


oh.customerid
> > > > > > o.customerid)
> > > > go
> > > >
> > > >
> > > > AMB
> > > >
> > > >
> > > > "Matías" wrote:
> > > >
> > > > > Hola grupo, tengo el siguiente sp en el cual saco los promedios


de
> las
> > > > > etapas 1 y 2:
> > > > >
> > > > > SELECT M.Nombre AS Materia, N.IDEtapa,
> > > > > CASE WHEN N.IDEtapa = 1 or N.IDEtapa= 2 THEN
> ROUND(AVG(N.Nota+.0),2)
> > > ELSE 0
> > > > > END AS Promedio
> > > > > FROM NOTAS N
> > > > > INNER JOIN Materias M ON N.IDMateria = M.IDMateria
> > > > > WHERE N.IDAlumno = @IdAlumno AND (N.IDEtapa = 1 or N.IDEtapa 2)
> > > > > AND DATEPART(yyyy, N.FechaExamen) = DATEPART(yyyy, GETDATE())
> > > > > GROUP BY M.Nombre, N.IDEtapa
> > > > > ORDER BY M.Nombre, N.IDEtapa
> > > > >
> > > > > Devuelve:
> > > > >
> > > > > Materia IdEtapa Promedio
> > > > > BIOLOGÍA I 1 6.33
> > > > > BIOLOGÍA I 2 7.50
> > > > > HISTORIA I 1 6.00
> > > > > HISTORIA I 2 4.33
> > > > > DIBUJO I 1 7.00
> > > > > EDUCACIÓN FÍSICA I 1 7.50
> > > > >
> > > > > Y yo quiero que devuelva lo mismo pero con un promedio FINAL ( o


sea
> por
> > > ej
> > > > > para Biologia (6.33+7.50)/2=6.92 )
> > > > >
> > > > > Materia IdEtapa Promedio
> > > PromedioFINAL
> > > > > BIOLOGÍA I 1 6.33
> > > 6.92
> > > > > BIOLOGÍA I 2 7.50
> > > 6.92
> > > > > HISTORIA I 1 6.00
> > > 5.16
> > > > > HISTORIA I 2 4.33
> > > 5.16
> > > > > DIBUJO I 1 7.00
> > > 7.00
> > > > > EDUCACIÓN FÍSICA I 1 7.50


7.50
> > > > >
> > > > > Como puedo hacer esto, ademas tengo que tener en cuenta que


puede
> haber
> > > > > promedio para una sola etapa.
> > > > > Saludos y gracias
> > > > >
> > > > > Las tablas son:
> > > > >
> > > > > NOTAS MATERIAS
> > > > > -
> > > > > IdAlumno IdMateria
> > > > > IdMateria Nombre
> > > > > IdEtapa
> > > > > Curso
> > > > > Orden
> > > > > Nota
> > > > > FechaExamen
> > > > >
> > > > >
> > > > >
> > >
> > >
> > >
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida