jueves, 10 de julio de 2014

Consultas SQL para numerar filas y contar repeticiones

Sumar  un total de registros que no tienen una columna  cantidad

SELECT SUM(rn) as Total FROM (  SELECT a.proyecto, ROW_NUMBER() OVER(PARTITION BY a.idalumno,a.idproyecto,a.proyecto ORDER BY a.proyecto  DESC)rn from proyectos as a INNER JOIN Alumnos as b on a.idAlumno=b.idalumno  INNER JOIN Carreras as c on b.carrera=c.idCarrera  where  a.Ano='2014' )a WHERE rn = 1 ;

Numeras registros
SELECT   rank() OVER (ORDER BY  b.nombre,a.idproyecto,a.idproyecto) as idproyecto, a.idalumno, b.nombre,c.nombre  as carrera, a.proyecto, a.organismo, a.periodo, a.ano as Año, a.Horas,d.estado as Estado_Proyecto FROM  Proyectos as a  INNER JOIN Alumnos as b on a.idalumno=b.idalumno INNER JOIN Carreras as c on b.carrera=c.idCarrera  INNER JOIN EstadosProyectos  as d on a.EstadoProyecto=d.id where  a.Ano='2014'  ORDER BY  b.nombre;

//Alumnos que presentaron proyectos
SELECT SUM(rn) as Total FROM (SELECT  ROW_NUMBER() OVER(PARTITION BY a.idAlumno ORDER BY a.idAlumno DESC) rn from proyectos  as a INNER JOIN Alumnos as b on a.idAlumno=b.idalumno  INNER JOIN Carreras as c on b.carrera=c.idCarrera where  a.Ano='2014' )a WHERE rn = 1;

//Total de proyectos del año 2014
SELECT SUM(rn) as Total FROM (  SELECT a.proyecto, ROW_NUMBER() OVER(PARTITION BY a.idalumno,a.idproyecto,a.proyecto ORDER BY a.proyecto  DESC)rn from proyectos as a INNER JOIN Alumnos as b on a.idAlumno=b.idalumno
 INNER JOIN Carreras as c on b.carrera=c.idCarrera  where  a.Ano='2014' )a WHERE rn = 1 ;

No hay comentarios.:

Publicar un comentario