-- Consultar tablas

SELECT * FROM datos.provincias;

SELECT "link", geom, provincia FROM datos.provincias;

-- Ordenar las consultas de las tablas por algún atributo

SELECT * FROM datos.provincias ORDER BY provincia ASC;

SELECT * FROM datos.provincias ORDER BY personas DESC;

-- Consultar los datos que cumplen cierta condición de una tabla

SELECT * FROM datos.provincias WHERE provincia = 'Catamarca';

SELECT * FROM datos.provincias WHERE provincia IN ('Catamarca', 'Chaco', 'Jujuy');

SELECT * FROM datos.provincias WHERE provincia LIKE 'C%';

SELECT * FROM datos.provincias WHERE provincia LIKE '% %';

SELECT * FROM datos.provincias WHERE personas < 992595;

SELECT * FROM datos.provincias WHERE personas BETWEEN 2890151 and 15625084;

select * from datos.localidades

SELECT * FROM datos.localidades WHERE codigo_ind = '06' OR nombre_dep = 'Belgrano';

SELECT * FROM datos.localidades WHERE codigo_ind = '06' AND nombre_dep = 'Rojas';

-- Concatenar diferentes atributos

SELECT "link", provincia, concat("link",' ' ,provincia) FROM datos.provincias;

SELECT "link", provincia, concat("link",' ' ,provincia) AS "Codigo - Nombre" FROM datos.provincias;

-- Convertir texto de los atributos a mayúscula o minúsculas

SELECT provincia, UPPER(provincia) as "Mayuscula" FROM datos.provincias;

SELECT provincia, LOWER	(provincia) as "Mayuscula" FROM datos.provincias;

-- Filtrar los caracteres de los atributos

SELECT provincia, LEFT(provincia, 2) as "Izquierda" FROM datos.provincias;

SELECT provincia, RIGHT(provincia, 2) as "Derecha" FROM datos.provincias;

SELECT provincia, SUBSTRING(provincia, 2, 4) as "Entre caracter" FROM datos.provincias;

-- Conteo de elementos del atributo

SELECT * FROM datos.provincias;

SELECT COUNT(*) AS "Cantidad" FROM datos.provincias;

-- Suma todos los valores de un atributo

SELECT COUNT(*) AS "Cantidad", SUM(personas) AS "Suma" FROM datos.provincias;	

-- Consulta el valor máximo y mínimo de un tipo de atributos

SELECT * FROM datos.provincias ORDER BY personas DESC;

SELECT MAX(personas) AS "Maximo" FROM datos.provincias;

SELECT MIN(personas) AS "Minimo" FROM datos.provincias;

SELECT provincia, personas FROM datos.provincias
	WHERE personas = (SELECT MAX(personas) FROM datos.provincias);

-- Calcula el promedio de un atributo

SELECT AVG(personas) AS "Promedio" FROM datos.provincias;

-- Redondear los valores numéricos de los atributos

SELECT round(AVG(personas)::"numeric", 2) AS "Promedio redondeado" FROM datos.provincias;

-- Ejemplo de cálculos

SELECT * FROM datos.provincias;

SELECT provincia,
	   personas,
	   (SELECT AVG(personas) FROM datos.provincias) AS "Promedio",
	   personas - (SELECT AVG(personas) FROM datos.provincias) AS "Dif",
	   POWER(personas - (SELECT AVG(personas) FROM datos.provincias), 2) AS "Dif2"
FROM datos.provincias;

SELECT 
	SUM(POWER(personas - (SELECT AVG(personas) FROM datos.provincias), 2)) / (COUNT(*) - 1) AS "Varianza"
FROM datos.provincias;

SELECT 
	SQRT(SUM(POWER(personas - (SELECT AVG(personas) FROM datos.provincias), 2)) / (COUNT(*) - 1)) AS "Desvio"
FROM datos.provincias;

-- Agrupar elementos según atributo

SELECT * FROM datos.departamentos;

SELECT codpcia, COUNT(codpcia) AS "Cantidad" FROM datos.departamentos GROUP BY codpcia;

SELECT codpcia, COUNT(codpcia) AS "Cantidad" FROM datos.departamentos GROUP BY codpcia HAVING COUNT(codpcia) = 7;

SELECT codpcia, COUNT(codpcia) AS "Cantidad", SUM (personas) AS "Sumatoria" FROM datos.departamentos GROUP BY codpcia HAVING COUNT(codpcia) = 7;
