{"id":49891242,"url":"https://github.com/aliciagilmatute/sql-data-analysis-complete-project","last_synced_at":"2026-05-15T21:15:10.213Z","repository":{"id":356499765,"uuid":"1232807723","full_name":"aliciagilmatute/sql-data-analysis-complete-project","owner":"aliciagilmatute","description":"Colección de scripts de SQL (PostgreSQL) donde se aplican una serie de técnicas de Análisis de Datos: cambios a lo largo del tiempo, análisis acumulativos, análisis de rendimiento, segmentación de datos, análisis de proporciones, etc.","archived":false,"fork":false,"pushed_at":"2026-05-08T10:49:19.000Z","size":6145,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-08T11:37:38.828Z","etag":null,"topics":["advanced-data-analysis","data-analytics","data-science","data-segmentation","exploratory-data-analysis","performance-analysis","postgresql","sql"],"latest_commit_sha":null,"homepage":"","language":"PLpgSQL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aliciagilmatute.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-08T09:42:09.000Z","updated_at":"2026-05-08T10:49:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/aliciagilmatute/sql-data-analysis-complete-project","commit_stats":null,"previous_names":["aliciagilmatute/sql-data-analysis-complete-project"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/aliciagilmatute/sql-data-analysis-complete-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliciagilmatute%2Fsql-data-analysis-complete-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliciagilmatute%2Fsql-data-analysis-complete-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliciagilmatute%2Fsql-data-analysis-complete-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliciagilmatute%2Fsql-data-analysis-complete-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aliciagilmatute","download_url":"https://codeload.github.com/aliciagilmatute/sql-data-analysis-complete-project/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliciagilmatute%2Fsql-data-analysis-complete-project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33080764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T20:25:35.270Z","status":"ssl_error","status_checked_at":"2026-05-15T20:25:34.732Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["advanced-data-analysis","data-analytics","data-science","data-segmentation","exploratory-data-analysis","performance-analysis","postgresql","sql"],"created_at":"2026-05-15T21:15:08.671Z","updated_at":"2026-05-15T21:15:10.206Z","avatar_url":"https://github.com/aliciagilmatute.png","language":"PLpgSQL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📊 SQL Data Analysis — Proyecto Completo\n\n![PostgreSQL](https://img.shields.io/badge/PostgreSQL-12+-336791?style=flat\u0026logo=postgresql\u0026logoColor=white)\n![PLpgSQL](https://img.shields.io/badge/PLpgSQL-advanced-blue?style=flat)\n![License](https://img.shields.io/badge/licencia-educativa-green?style=flat)\n![Status](https://img.shields.io/badge/estado-completo-brightgreen?style=flat)\n\n\u003e Colección de scripts SQL (PostgreSQL / PLpgSQL) que aplica técnicas avanzadas de Análisis de Datos sobre un modelo de datos de ventas y clientes.\n---\n\n![Data Analytics Roadmap](docs/data-analytics_roadmap.png)\n\n\n## 🎯 ¿Qué aprenderás con este proyecto?\n\nEste repositorio es una **guía práctica de análisis de datos con SQL puro**. Si lo estudias y ejecutas, serás capaz de:\n\n- Explorar y entender la estructura de cualquier base de datos relacional desde cero.\n- Aplicar las técnicas analíticas más demandadas en el mundo real: rankings, acumulados, análisis temporal, segmentación y proporciones.\n- Escribir consultas SQL avanzadas con funciones de ventana, CTEs y agrupaciones complejas.\n- Construir informes consolidados de clientes y productos listos para negocio.\n\nEs ideal como **proyecto de portfolio** para demostrar habilidades analíticas en entrevistas de trabajo, o como referencia reutilizable en el día a día como analista o profesional de BI.\n\n---\n\n## 📝 Descripción General\n\nLos scripts cubren desde la exploración inicial de la base de datos hasta técnicas avanzadas como análisis acumulativos, segmentación de clientes, análisis de rendimiento y cálculo de proporciones. Cada script aborda un tema analítico concreto y está diseñado para ser **comprensible de forma independiente**, aunque juntos forman un flujo de análisis completo.\n\n---\n\n## 🏛️ Arquitectura del Proyecto\n\nEste repositorio forma parte de un flujo completo **Data Engineering → Data Analysis**:\n\n```\n┌──────────────────────────────────────────────────────────────────┐\n│               PROYECTO DE DATA ENGINEERING (origen)              │\n│                                                                   │\n│  Fuentes externas ──► 🥉 Bronze ──► 🥈 Silver ──► 🥇 Gold        │\n│  (CRM, ERP, etc.)      (raw)         (limpia)      (analítico)   │\n└──────────────────────────────────────────────────────────────────┘\n                                                       │\n                                                       ▼\n┌──────────────────────────────────────────────────────────────────┐\n│               ESTE REPOSITORIO (análisis sobre Gold)             │\n│                                                                   │\n│   scripts/ ──► Consultas analíticas sobre tablas dim_* y fact_*  │\n└──────────────────────────────────────────────────────────────────┘\n```\n\nLos scripts de análisis trabajan directamente sobre la **capa Gold**, que contiene tablas dimensionales (`dim_*`) y de hechos (`fact_*`) ya limpias, estandarizadas e integradas.\n\n---\n\n## 🗂️ Estructura del Repositorio\n\n```\nsql-data-analysis-complete-project/\n│\n├── datasets/\n│   └── csv-files/           # 17 archivos CSV exportados del Data Warehouse\n│       ├── bronze_*.csv     # Capa Bronze: datos crudos de los sistemas fuente\n│       ├── silver_*.csv     # Capa Silver: datos limpios y estandarizados\n│       └── gold_*.csv       # Capa Gold: tablas dim_* y fact_* del modelo estrella\n│\n├── docs/                    # Diagramas del modelo de datos y documentación adicional\n│\n└── scripts/                 # Scripts SQL organizados por técnica analítica\n```\n\n### 📁 `datasets/`\n\nContiene los archivos CSV resultantes del Data Warehouse. Para los análisis se utilizan únicamente las vistas de la capa Gold:\n\n| Vista | Descripción |\n|-------|-------------|\n| `gold.dim_customer` | Información de los clientes |\n| `gold.dim_products` | Catálogo de artículos con categorías y precios |\n| `gold.fact_sales` | Transacciones con fechas, cantidades e importes |\n\n### 📁 `docs/`\n\nDocumentación de apoyo: diagramas del modelo de datos (ERD), descripción de los conjuntos de datos y guías de uso.\n\n### 📁 `scripts/`\n\nEl núcleo del proyecto. Los scripts están organizados por categoría analítica y deben ejecutarse en orden numérico:\n\n| Script | Descripción |\n|--------|-------------|\n| `01_database_exploration.sql` | Exploración inicial: tablas, columnas, tipos de datos, conteos de registros y valores únicos |\n| `02_dimensions_exploration.sql` | Análisis de tablas de dimensiones: clientes, productos y territorios |\n| `03_date_range_exploration.sql` | Exploración del rango temporal de los datos y detección de huecos en fechas |\n| `04_measures_exploration.sql` | Cálculo de métricas clave: totales, promedios, mínimos y máximos |\n| `05_magnitude_analysis.sql` | Análisis de magnitud: identificación de los valores más grandes y más pequeños |\n| `06_ranking_analysis.sql` | Técnicas de ranking con `RANK()`, `DENSE_RANK()` y `ROW_NUMBER()` |\n| `07_change_over_time.sql` | Análisis de cambios a lo largo del tiempo: tendencias mensuales, anuales y comparativas |\n| `08_cumulative_analysis.sql` | Análisis acumulativos: totales acumulados, medias móviles y sumas rodantes |\n| `09_performance_analysis.sql` | Comparación de resultados reales frente a objetivos o períodos anteriores |\n| `10_part_to_whole.sql` | Análisis de proporciones: contribución de cada parte al total (%) |\n| `11_data_segmentation.sql` | Segmentación de clientes y productos en grupos significativos |\n| `12_customer_report.sql` | Informe consolidado de clientes con métricas de valor, recencia y frecuencia |\n| `13_product_report.sql` | Informe consolidado de productos con análisis de ventas, márgenes y tendencias |\n\n---\n\n## 🔍 Técnicas Analíticas Aplicadas\n\n### 1. 🗺️ Exploración de la Base de Datos\nAntes de analizar, es necesario entender los datos. Estos scripts permiten inspeccionar la estructura del esquema, identificar tablas y relaciones, detectar valores nulos y comprender el rango temporal de los registros disponibles.\n\n### 2. 📈 Cambios a lo Largo del Tiempo (*Change Over Time*)\nAnálisis de evolución temporal usando funciones de ventana y agrupaciones por fecha. Permite identificar tendencias, estacionalidades y variaciones interanuales.\n\n```sql\n-- Ventas totales por año y mes\nSELECT\n    DATE_TRUNC('month', order_date) AS mes,\n    SUM(sales_amount)               AS ventas_totales\nFROM gold.fact_sales\nGROUP BY 1\nORDER BY 1;\n```\n\n**Ejemplo de resultado:**\n\n| mes        | ventas_totales |\n|------------|---------------|\n| 2022-01-01 | 48,320.00     |\n| 2022-02-01 | 52,180.00     |\n| 2022-03-01 | 61,450.00     |\n\n### 3. 📊 Análisis Acumulativos (*Cumulative Analysis*)\nCálculo de totales acumulados y medias móviles con `SUM() OVER` y `AVG() OVER`. Útil para visualizar el crecimiento progresivo de una métrica.\n\n```sql\n-- Total acumulado de ventas\nSELECT\n    order_date,\n    sales_amount,\n    SUM(sales_amount) OVER (ORDER BY order_date) AS ventas_acumuladas\nFROM gold.fact_sales;\n```\n\n### 4. 🏆 Análisis de Rendimiento (*Performance Analysis*)\nCompara el rendimiento actual frente a un período anterior usando `LAG()`. Permite detectar de un vistazo si el negocio crece o retrocede.\n\n```sql\n-- Crecimiento respecto al año anterior\nSELECT\n    anio,\n    ventas,\n    LAG(ventas) OVER (ORDER BY anio)          AS ventas_anio_anterior,\n    ventas - LAG(ventas) OVER (ORDER BY anio) AS diferencia\nFROM gold.fact_sales;\n```\n\n### 5. 🧩 Segmentación de Datos (*Data Segmentation*)\nAgrupa clientes o productos en segmentos según criterios cuantitativos usando `CASE WHEN`, `NTILE()` o rangos personalizados.\n\n```sql\n-- Segmentación de clientes por gasto total\nSELECT\n    customer_key,\n    total_spent,\n    CASE\n        WHEN total_spent \u003e= 10000 THEN 'VIP'\n        WHEN total_spent \u003e= 3000  THEN 'Regular'\n        ELSE 'Ocasional'\n    END AS segmento\nFROM gold.dim_customers;\n```\n\n**Ejemplo de resultado:**\n\n| customer_key | total_spent | segmento  |\n|-------------|-------------|-----------|\n| C-0041       | 15,200.00   | VIP       |\n| C-0112       | 4,850.00    | Regular   |\n| C-0237       | 980.00      | Ocasional |\n\n### 6. 🍰 Análisis de Proporciones (*Part-to-Whole*)\nCalcula el porcentaje que representa cada categoría sobre el total global. Fundamental para entender la distribución del negocio y detectar concentraciones de riesgo.\n\n```sql\n-- % de ventas por categoría de producto\nSELECT\n    category,\n    SUM(sales_amount) AS ventas,\n    ROUND(\n        100.0 * SUM(sales_amount) / SUM(SUM(sales_amount)) OVER (),\n    2) AS porcentaje\nFROM fact_sales\nJOIN gold.dim_products USING (product_key)\nGROUP BY category;\n```\n\n### 7. 📋 Informes Consolidados (*Reports*)\nScripts que combinan múltiples técnicas para generar vistas analíticas completas. Incluyen métricas de **Recencia** (última compra), **Frecuencia** (número de pedidos) y **Valor monetario** (gasto total acumulado).\n\n---\n\n## ⚙️ Requisitos y Configuración\n\n### Prerrequisitos\n\n- **PostgreSQL** versión 12 o superior.\n- Cliente SQL: [pgAdmin](https://www.pgadmin.org/), [DBeaver](https://dbeaver.io/), o cualquier cliente compatible.\n\n### Pasos para Ejecutar el Proyecto\n\n**1. Clona el repositorio:**\n```bash\ngit clone https://github.com/aliciagilmatute/sql-data-analysis-complete-project.git\ncd sql-data-analysis-complete-project\n```\n\n**2. Crea la base de datos:**\n```sql\nCREATE DATABASE sql_analytics_db;\n```\n\n**3. Carga los datos de la capa Gold:**\n```bash\n-- Ejecuta en orden los archivos de datasets/csv-files/gold_*.csv\n-- o importa directamente desde tu cliente SQL (pgAdmin / DBeaver)\n```\n\n\u003e 💡 Los scripts de análisis solo necesitan las tablas de la capa Gold (`gold.dim_customer`, `gold.dim_products`, `gold.fact_sales`). Si ya tienes un Data Warehouse propio, puedes adaptar los scripts a tu esquema.\n\n**4. Ejecuta los scripts de análisis:**\n\nAbre los archivos de la carpeta `scripts/` y ejecútalos en orden numérico, comenzando por `01_database_exploration.sql`.\n\n---\n\n## 🧰 Tecnologías Utilizadas\n\n| Tecnología | Uso |\n|-----------|-----|\n| **PostgreSQL** | Motor de base de datos relacional |\n| **PLpgSQL** | Lenguaje procedural para scripts avanzados |\n| **pgAdmin / DBeaver** | Clientes SQL para ejecutar y visualizar resultados |\n| **SQL Window Functions** | `RANK()`, `LAG()`, `SUM() OVER()`, `AVG() OVER()` |\n| **CTEs** | Consultas estructuradas con `WITH` para mayor legibilidad |\n\n---\n\n## 📚 Conceptos SQL Demostrados\n\nA lo largo del proyecto se aplican los siguientes conceptos:\n\n- **Funciones de ventana:** `ROW_NUMBER()`, `RANK()`, `DENSE_RANK()`, `LAG()`, `LEAD()`, `SUM() OVER()`, `AVG() OVER()`\n- **CTEs (Common Table Expressions):** uso de `WITH` para estructurar consultas complejas en pasos legibles\n- **Agrupaciones avanzadas:** `GROUP BY`, `ROLLUP`, `CUBE`\n- **Funciones de fecha:** `DATE_TRUNC()`, `EXTRACT()`, `AGE()`, `DATE_PART()`\n- **Funciones condicionales:** `CASE WHEN`, `COALESCE()`, `NULLIF()`\n- **Subqueries y JOINs** para combinar múltiples tablas y fuentes de datos\n\n---\n\n## 📌 Casos de Uso\n\nEste proyecto es ideal para:\n\n- 👩‍💻 **Analistas de datos** que quieren practicar SQL orientado al análisis de negocio.\n- 📊 **Profesionales de BI** que necesitan plantillas de consultas reutilizables.\n- 🎓 **Estudiantes** que buscan ejemplos reales de técnicas analíticas en SQL.\n- 🗂️ **Portfolio profesional** para demostrar habilidades en entrevistas de trabajo.\n\n---\n\n## 🔗 Proyectos Relacionados\n\nEste repositorio es la segunda parte de un flujo completo de datos. El origen de los datasets utilizados aquí es el siguiente proyecto de Data Engineering:\n\n\u003e 📦 **[SQL Data Warehouse Project](https://github.com/aliciagilmatute/sql_data_warehouse_project)** — Construcción de un Data Warehouse desde fuentes brutas hasta la capa Gold, con arquitectura Medallion (Bronze → Silver → Gold).\n\n---\n\n## 👤 Autora\n\n**Alicia Gil Matute**  \n[![GitHub](https://img.shields.io/badge/GitHub-@aliciagilmatute-181717?style=flat\u0026logo=github)](https://github.com/aliciagilmatute)\n\n---\n\n## 📄 Licencia\n\nEste proyecto está licenciado bajo la **Licencia MIT** — consulta el archivo [LICENSE](LICENSE.txt) para más detalles.\n\nEres libre de usar, modificar y distribuir este proyecto con la atribución correspondiente.\n\n---\n\n*¿Tienes sugerencias o mejoras? ¡Las contribuciones son bienvenidas! Abre un issue o un pull request.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliciagilmatute%2Fsql-data-analysis-complete-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faliciagilmatute%2Fsql-data-analysis-complete-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliciagilmatute%2Fsql-data-analysis-complete-project/lists"}