You are on page 1of 3

Semana #4---------------------------------------06/10/18

WHERE --> Solo filtra registro por registro.

HAVING --> Filtra por grupos a diferencia del WHERE.

--Cuente los empleados en grupos por a�o y por pa�s. Desde el a�o 2014
--Siempre se debe de usar con el orden de a�o/mes/dia

SELECT country
,YEAR(hiredate) AS yearhired
,COUNT (*) AS NumEmployees
FROM HR.Employees
WHERE hiredate >= CAST ('20140101' AS DATE)
GROUP BY country, YEAR(hiredate)
--HAVING COUNT (*) >1
ORDER BY country
,yearhired DESC;

--Es la forma de hacer lo anterior utilizando los formatos 101, 111 y 112.

SELECT country
,YEAR(hiredate) AS yearhired
,COUNT (*) AS NumEmployees
FROM HR.Employees
WHERE hiredate >= CONVERT (DATE, '20143112', 112)
GROUP BY country, YEAR(hiredate)
--HAVING COUNT (*) >1
ORDER BY country
,yearhired DESC;

SELECT DATEFROMPARTS(2018, 02, 15);

SELECT country
,YEAR(hiredate) AS yearhired
,COUNT (*) AS NumEmployees
FROM HR.Employees
WHERE hiredate >= CAST ('20140101' AS DATE)
GROUP BY country, YEAR(hiredate)
HAVING COUNT (*) >1
ORDER BY country
,yearhired DESC;

SELECT *
FROM Sales.Customers;

--Cantidad de clientes por pa�s


SELECT country
,COUNT (*) AS NumCustomers
FROM Sales.Customers
GROUP BY country
ORDER BY NumCustomers DESC;

--Cantidad de clientes por pa�s y ciudad


SELECT country
,city
,COUNT (*) AS NumCustomers
FROM Sales.Customers
GROUP BY country
,city
ORDER BY country
, city DESC;

--Cantidad de ordenes por a�o


SELECT YEAR(orderdate) AS YEAR
,COUNT(*) AS QOrders
FROM Sales.Orders
GROUP BY YEAR(orderdate)
ORDER BY QOrders DESC;

--Cantidad de ordenes por a�o y por mes


SELECT YEAR(orderdate) AS YEAR
,MONTH(orderdate) AS MONTH
,COUNT(*) AS QOrders
FROM Sales.Orders
GROUP BY YEAR(orderdate)
,MONTH(orderdate)
ORDER BY YEAR DESC
,MONTH DESC;

SET STATISTICS IO ON;


--Cantidad de ordenes por a�o y por mes, desde el 2015
SELECT YEAR(orderdate) AS YEAR
,MONTH(orderdate) AS MONTH
,COUNT(*) AS QOrders
FROM Sales.Orders
WHERE orderdate >= CAST ('20150101' AS DATE)
GROUP BY YEAR(orderdate)
,MONTH(orderdate)
ORDER BY YEAR DESC
,MONTH DESC;

--Cantidad de ordenes por a�o y por mes, con ordenes mayor igual a 28
SELECT YEAR(orderdate) AS YEAR
,MONTH(orderdate) AS MONTH
,COUNT(*) AS QOrders
FROM Sales.Orders
WHERE orderdate >= CAST ('20150101' AS DATE)
GROUP BY YEAR(orderdate)
,MONTH(orderdate)
HAVING COUNT(*) >= 28
ORDER BY YEAR DESC
,MONTH DESC;

--Para buscar con la inicial de un nombre, en este caso con la D


SELECT *
FROM HR.Employees
WHERE lastname LIKE N'D%';

--Para buscar con el contenido de una palabra, sin importar el inicio o el fin.
SELECT *
FROM HR.Employees
WHERE lastname LIKE N'%el%';

--Para buscar con el contenido de una palabra, por la cantidad de caracteres.


SELECT *
FROM HR.Employees
WHERE lastname LIKE N'_u%';

--Para buscar con el contenido de una palabra, en este caso si inicia con d o c.
SELECT *
FROM HR.Employees
WHERE lastname LIKE N'[dc]%';

--TOP sirve para indicar la cantidad de datos a mostrar, en este caso las primeras
3 ordenes.
SELECT TOP(3) orderid
,orderdate
,custid
,empid
FROM SALES.Orders
ORDER BY orderdate;

--Un mostreo de un 5% m�s alto de todos de las ultimas compras --> Muestra el
porcentaje
SELECT TOP(5) PERCENT orderid
,orderdate
,custid
,empid
FROM SALES.Orders
ORDER BY orderdate desc;

--Un mostreo de un 5% m�s alto de todos de las ultimas compras --> Muestra el
porcentaje
DECLARE @Porc AS INT;
SET @Porc = 5;

SELECT TOP(@Porc) PERCENT orderid


,orderdate
,custid
,empid
FROM SALES.Orders
ORDER BY orderdate desc;

You might also like