Está en la página 1de 11

Tips SSMS

1.Consultar datos de una tabla. 2.Varias sentencias por ventana y


solo ejecutar una.
Agrupando y calculando data (GROUP BY /
SUM / COUNT)
select count(*) totalAlumnos
from ope.AlumnosMatriculados;

select sum(montoPagado) TotalIngresos


from ope.tCronogramaPagosDetalle_mod

select count(*) totalAlumnosArequipa


from ope.AlumnosMatriculados alu
where alu.ciudad = 'AREQUIPA';

select count(*) totalAlumnosArequipa


from ope.AlumnosMatriculados alu
where ciudad = 'AREQUIPA' AND Edad<30;

select alu.ciudad, count(*) total


from ope.AlumnosMatriculados alu
GROUP BY alu.ciudad;

select alu.ciudad, count(*) total


from ope.AlumnosMatriculados alu
GROUP BY alu.ciudad;

select alu.ciudad, alu.Edad, count(*) total


from ope.AlumnosMatriculados alu
GROUP BY alu.ciudad,alu.Edad;
Ordenar y filtrar data agrupada (ORDER BY / HAVING)
select alu.ciudad, alu.Edad, count(*) total
from ope.AlumnosMatriculados alu
GROUP BY alu.ciudad,alu.Edad
order by alu.ciudad,alu.Edad;

select alu.ciudad, alu.Edad, count(*) total


from ope.AlumnosMatriculados alu
WHERE alu.Edad BETWEEN 18 AND 80
GROUP BY alu.ciudad,alu.Edad
order by alu.ciudad,alu.Edad;

select alu.ciudad, alu.Edad, count(*) total


from ope.AlumnosMatriculados alu
WHERE alu.Edad BETWEEN 18 AND 80
GROUP BY alu.ciudad,alu.Edad
HAVING count(*)>100
order by alu.ciudad,alu.Edad;

select alu.ciudad, alu.genero, count(*) total


from ope.AlumnosMatriculados alu
GROUP BY alu.ciudad, alu.genero
order by alu.ciudad, alu.genero;

EJERCICIOS
1.Cuantos alumnos matriculados existen por genero
2.Cuantos alumnos matriculados existen por genero y ciudad
ALUMNOS POR GENERO Y CIUDAD
*Usando la función IIF

select alu.ciudad,
sum(IIF(alu.genero='F',1,0)) mujeres ,
sum(IIF(alu.genero='M',1,0)) varones
from ope.AlumnosMatriculados alu
GROUP BY alu.ciudad
order by alu.ciudad;
Vinculando data de dos o mas tablas (INNER
JOIN)
select alu.CodigoAlumno, alu.Alumno, acu.IdCurso
from ope.AlumnosMatriculados alu
INNER JOIN ope.ra_Alumno_Curso acu ON acu.IdAlumno = alu.id;

select alu.CodigoAlumno, alu.Alumno, cur.NombreCurso


from ope.AlumnosMatriculados alu
INNER JOIN ope.ra_Alumno_Curso acu ON acu.IdAlumno = alu.id
INNER JOIN ope.ra_Curso cur ON cur.Id = acu.IdCurso;

EJERCICIO
1. Muestre los nombres de todos los cursos y el nombre del Centro de costo al que
pertenecen.
2. Muestre los nombres de los cursos y el nombre de su Centro de costo, pero solo los
cursos que tienen como «TipoContrato» «Extranjero».

select cur.NombreCurso, ses.Fecha,


alu.CodigoAlumno, alu.Alumno, asi.Asistio
from ope.ra_Sesion ses
INNER JOIN ope.ra_Curso cur ON cur.Id = ses.IdCurso
INNER JOIN ope.ra_Asistencia asi ON asi.IdSesion = ses.Id
INNER JOIN ope.AlumnosMatriculados alu ON asi.IdAlumno = alu.id
WHERE cur.Id = 5057;
Vinculando data de dos o mas tablas (LEFT
JOIN / RIGHT JOIN)
select cco.NombreCentroCosto, cur.NombreCurso
from ope.ra_CentroCosto cco
INNER JOIN ope.ra_Curso cur ON cur.IdCentroCosto = cco.Id;

select cco.NombreCentroCosto, cur.NombreCurso


from ope.ra_CentroCosto cco
LEFT JOIN ope.ra_Curso cur ON cur.IdCentroCosto = cco.Id;

select mat.Alumno, mod.fecha_pago, mod.cuota


from ope.AlumnosMatriculados mat
INNER JOIN ope.tCronogramaPagosDetalle_mod mod ON mod.matId =
mat.CodigoAlumno;

select mat.Alumno, mod.fecha_pago, mod.cuota


from ope.AlumnosMatriculados mat
RIGHT JOIN ope.tCronogramaPagosDetalle_mod mod ON mod.matId =
mat.CodigoAlumno;
Funciones de Fecha útiles con SELECT
1. Para obtener el día de hoy. 11. Primer día del mes actual.
SELECT GETDATE(); SELECT DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0);

2. Para obtener el día de ayer. 12. Último día del mes actual.
SELECT DATEADD(d,-1,GETDATE()); SELECT DATEADD(ms,-
3,DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,GETDATE())+1,0)));
3. Inicio del día actual.
SELECT DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0); 13. Primer día del mes pasado.
SELECT DATEADD(mm,-1,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0));
4. Fin del día actual
SELECT DATEADD(ms,-3,DATEADD(dd,DATEDIFF(dd,0,GETDATE()),1)); 14. Último día del mes pasado.
SELECT DATEADD(ms,-
5. Inicio de ayer. 3,DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0))) ;
SELECT DATEADD(dd,DATEDIFF(dd,0,GETDATE()),-1);
6. Fin de ayer. 15. Primer día de este año.
SELECT DATEADD(ms,-3,DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0)); SELECT DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0);

7. Primer día de la semana actual. 16. Último día de este año.


SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE()),0); SELECT DATEADD(ms,-
3,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,GETDATE())+1,0))) ;
8. Último día de la semana actual.
SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE()),6); 17. Primer día del año pasado.
SELECT DATEADD(yy,-1,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0));
9. Primer día de la semana pasada.
SELECT DATEADD(wk,DATEDIFF(wk,7,GETDATE()),0; 18. Último día del año pasado.
SELECT DATEADD(ms,-
10. Último día de la semana pasada. 3,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0)));
SELECT DATEADD(wk,DATEDIFF(wk,7,GETDATE()),6;
19. Primer día del próximo mes.
SELECT DATEADD(mm,1,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0));

20. Último día del próximo mes.


SELECT DATEADD(ms,-3,DATEADD(mm,DATEADD(mm,
(DATEDIFF(mm,0,GETDATE()),0)));
Otras Funciones útiles con SELECT
AVG Devuelve el valor medio de una columna. UCASEConvierte un valor a mayúsculas.
SELECT AVG(columna) FROM tabla SELECT UCASE('jose') FROM table;

COUNT Devuelve el número de filas de la LCASE Convierte un valor a minúsculas.


consulta. SELECT LCASE('JOSE') FROM table;
SELECT COUNT(columna) FROM tabla
MID Extrae caracteres de un campo de texto.
FIRST Devuelve el primer valor de la consulta. SELECT MID('JOSE', 2, 2) FROM tabla;
SELECT FIRST(columna) FROM table
LEN Devuelve la longitud de un campo de texto.
LAST Devuelve el último valor de la consulta. SELECT LEN('JOSE') FROM table;
SELECT LAST(columna) FROM table
ROUND Redondea un campo numérico a un número de
MAX Devuelve el mayor valor de una columna. decimales especificado.
SELECT MAX(columna) FROM table SELECT ROUND(columna, decimales) FROM tabla;

MIN Devuelve el menor valor de una columna. NOW Devuelve la fecha y hora actuales del sistema.
SELECT MIN(columna) FROM table SELECT NOW() FROM table;

SUM Devuelve la suma de los valores de una FORMAT Formatea un campo según se quiera mostrar.
columna. SELECT FORMAT(columna, formato) FROM tabla
SELECT SUM(columna) FROM table SELECT producto, precio,FORMAT(NOW(), ‘YYYY-MM-DD’) AS
fecha FROM productos
EJERCICIOS

1. Todos los Alumnos matriculados en el 2017.


2. Alumnos matriculados en el 2018 de Trujillo y Bogotá.
3. Total de ingresos por Alumno.
4. Total de cursos matriculados por alumno.
5. Promedio general de los alumnos de X curso.
6. ___________________________________________
7. ___________________________________________
8. ___________________________________________
9. ___________________________________________
10.___________________________________________
Referencias
https://bloginspanish.wordpress.com/2014/01/04/funciones-de-fecha-utiles-en-sql-se
rver/comment-page-1
/

También podría gustarte