├── .DS_Store ├── .github └── workflows │ ├── notify.yml │ └── send_telegram_message.py ├── .gitignore ├── LICENSE ├── README.md └── contenido.curso ├── .gitkeep ├── 000.recursos ├── datasets │ ├── comunas_medellin.geojson │ ├── comunas_medellin.parquet │ ├── parranda.xlsx │ ├── titanic.csv │ └── tv_shows.json ├── db │ ├── 001.link.descarga.txt │ ├── 002.modelo.relacional.blanco.png │ ├── 003.modelo.relacional.negro.png │ └── 004.eventos.sql ├── libros │ └── 001.duckdb.in.action.motherduck.pdf ├── notebooks │ └── bootcamp_dql_clases_template.ipynb └── videos │ ├── 001.intro.curso.txt │ └── 002.entrega.trabajos.txt ├── 001.imagenes └── .gitkeep ├── 002.documentos ├── .gitkeep ├── 000.bienvenida.pdf ├── 001.intro.curso.pdf ├── 002.tipos.de.datos.pdf ├── 003.esquemas.catalogos.pdf ├── 004.tipos.transacciones.pdf ├── 005.tipos.datos.simples.pdf ├── 006.tipos.datos.complejos.pdf ├── 007.extensiones.pdf ├── 008.uso.parquet.pdf └── 009.geodata.pdf ├── 003.normalizacion ├── .gitkeep └── 001.normalizacion.3FN.xlsx ├── 004.modelo.datos └── .gitkeep ├── 005.sesiones ├── .gitkeep ├── 001.10092024 │ └── 000.sesion_1.pdf ├── 002.12092024 │ └── 000.sesion_2.conceptos.tipos.bd.pdf ├── 003.17102024 │ └── 000.sesion_3.conceptosbd.pdf ├── 004.19092024 │ └── 000.sesion_4.cnormalizacion.pdf ├── 005.24092024 │ └── 000.descarga.archivo.txt ├── 006.26042024 │ ├── 001.concurso.txt │ ├── dataset_netflix_titles_nov_2019 2.csv │ ├── parranda_deivis_diagrama.ddb │ └── solucion.er │ │ └── netflix_diagram.png ├── 007.01102024 │ ├── 001.transversales.sql │ └── 002.create.sql ├── 008.03102024 │ ├── 002.create.sql │ ├── 003.alter.sql │ └── 004.drop.sql ├── 009.08102024 │ ├── 001.insert.sql │ ├── 002.update.sql │ ├── 003.delete.sql │ └── 004.truncate.sql ├── 010.10102024 │ ├── 001.transversal.sql │ ├── 002.textos.sql │ ├── 003.numeros.sql │ └── 004.fechas.sql ├── 011.15102024 │ ├── 005.blobs.sql │ ├── 006.array.sql │ ├── 007.list.sql │ ├── 008.map.sql │ └── 009.from.sql ├── 012.17102024 │ ├── 001.conceptos.avanzados.parte.1.pdf │ ├── 010.unions.sql │ ├── 011.fagregacion.sql │ ├── 012.subqueries.sql │ └── 013.joins.sql ├── 013.22102024 │ ├── 001.conceptos.avanzados.parte.2.pdf │ ├── 014.like.sql │ ├── 015.cte.sql │ ├── 016.windows.sql │ ├── 017.pivot.sql │ ├── 018.views.sql │ └── 019.secuencias.sql ├── 014.24202024 │ ├── 001.conceptos.avanzados.parte.3.pdf │ ├── 020.macros.sql │ ├── 021.enums.sql │ ├── 022.variables.sql │ ├── 023.transactions.sql │ ├── 024.extensiones.sql │ └── 025.lectura.archivos.sql └── 015.29102024 │ ├── 001.conceptos.avanzados.parte.4.pdf │ ├── 026.exportaciones.sql │ ├── 027.geodata.sql │ ├── 028.estadisticas.sql │ ├── 029.linea.comandos.txt │ └── 030.propiedades.sql └── 006.ejercicios └── .gitkeep /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/.DS_Store -------------------------------------------------------------------------------- /.github/workflows/notify.yml: -------------------------------------------------------------------------------- 1 | name: Notificar nuevo issue en Telegram 2 | 3 | on: 4 | issues: 5 | types: [opened] 6 | 7 | jobs: 8 | notify: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - name: Checkout repository 13 | uses: actions/checkout@v2 14 | 15 | - name: Install Python 16 | uses: actions/setup-python@v2 17 | with: 18 | python-version: '3.x' 19 | node-version: '16' 20 | 21 | - name: Install dependencies 22 | run: | 23 | pip install requests 24 | 25 | - name: Notify Telegram 26 | env: 27 | TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} 28 | TELEGRAM_GROUP_ID: ${{ secrets.TELEGRAM_GROUP_ID }} 29 | run: | 30 | python .github/workflows/send_telegram_message.py \ 31 | '${{ secrets.TELEGRAM_BOT_TOKEN }}' \ 32 | '${{ secrets.TELEGRAM_GROUP_ID }}' \ 33 | '${{ github.event.issue.user.login }}' \ 34 | '${{ github.event.issue.title }}' \ 35 | '${{ github.event.issue.html_url }}' \ 36 | '${{ github.event.issue.number }}' \ 37 | "${{ join(github.event.issue.labels.*.name, ', ') }}" 38 | -------------------------------------------------------------------------------- /.github/workflows/send_telegram_message.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import requests 3 | from datetime import datetime, timedelta 4 | 5 | bot_token = sys.argv[1] 6 | group_id = sys.argv[2] 7 | user = sys.argv[3] 8 | issue_title = sys.argv[4] 9 | issue_url = sys.argv[5] 10 | issue_number = sys.argv[6] 11 | issue_tags = sys.argv[7] 12 | 13 | message = f''' 14 | [Nuevo Ticket] - ID #: {issue_number} 15 | Creado por: {user} 16 | Tema: {issue_title} 17 | Enlace: click aquí 18 | Tags: {issue_tags} 19 | Notificación: {(datetime.now() - timedelta(hours=5)).strftime("%d/%m/%Y : %H:%M:%S")} 20 | ''' 21 | 22 | r =requests.post( 23 | f'https://api.telegram.org/bot{bot_token}/sendMessage', 24 | json={'chat_id': group_id, 'text': message, 'parse_mode' : 'HTML'} 25 | ) -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | distribute -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 codingupmyfuture 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | reporte 3 | 4 | ![cumf-db](https://i.postimg.cc/PxVdgjnj/Slide4.jpg) 5 | 6 |
7 | 8 | ### **IMPORTANCIA DE LAS BASES DE DATOS** 9 | 10 | Aprender bases de datos es fundamental, ya que son la base de casi todas las aplicaciones y sistemas modernos, desde redes sociales hasta servicios bancarios. Gestionan y organizan la información de manera eficiente y son clave para el análisis de datos y la toma de decisiones informadas. 11 | ### **DUCKDB** 12 | 13 | DuckDB es un motor de base de datos SQL diseñado para el análisis de grandes volúmenes de datos de manera rápida y eficiente, sin la necesidad de configuraciones complejas de servidores. 14 | 15 | ![duckdb](https://miro.medium.com/v2/resize:fit:950/1*_ujkoMQbD__1sa7U0rzINw.png) 16 | ### **CONTENIDO CURSO** 17 | 18 | Este bootcamp está diseñado para ser impartido en 14 sesiones, con una duración de 2 horas por sesión, totalizando 28 horas. La fecha de inicio es el Martes 03/09/2024 y finalizará el Jueves 17/10/2024. Los temas que se tratarán son: 19 | 20 | ![topics](https://i.postimg.cc/QxGh606S/cumf-bd.png) 21 | ### **INSTRUCTOR** 22 | 23 | El bootcamp es creado y presentado por **Luis Fernando Vásquez Vergara**, quien cuenta con más de 17 años de experiencia en la industria del software, con especialización en ingeniería de datos. 24 | 25 | Luis Fernando Vásquez Vergara 26 | LinkedIn Badge 27 | 28 | ### **LICENCIA** 29 | 30 | Este repositorio está bajo la licencia **MIT**. Esta licencia de software de código abierto permite a los usuarios usar, modificar y distribuir el software libremente. La única condición es que se debe incluir el aviso de derechos de autor original y el aviso de la licencia en todas las copias o partes sustanciales del software. 31 | ### **RECOMENDACIONES** 32 | 33 | Para no tener ningún problema con el curso y la asistencia, por favor asegúrese que la versión sea superior a **5.2.16** 34 | 35 | ![zoom version](https://github.com/codingupmyfuture/bootcamplinuxpython/raw/main/contenido.curso/000.imagenes/001.zoom.version.png) 36 | -------------------------------------------------------------------------------- /contenido.curso/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/.gitkeep -------------------------------------------------------------------------------- /contenido.curso/000.recursos/datasets/comunas_medellin.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/000.recursos/datasets/comunas_medellin.parquet -------------------------------------------------------------------------------- /contenido.curso/000.recursos/datasets/parranda.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/000.recursos/datasets/parranda.xlsx -------------------------------------------------------------------------------- /contenido.curso/000.recursos/datasets/titanic.csv: -------------------------------------------------------------------------------- 1 | PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked 2 | 1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S 3 | 2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C 4 | 3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S 5 | 4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S 6 | 5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S 7 | 6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q 8 | 7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S 9 | 8,0,3,"Palsson, Master. Gosta Leonard",male,2,3,1,349909,21.075,,S 10 | 9,1,3,"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",female,27,0,2,347742,11.1333,,S 11 | 10,1,2,"Nasser, Mrs. Nicholas (Adele Achem)",female,14,1,0,237736,30.0708,,C 12 | 11,1,3,"Sandstrom, Miss. Marguerite Rut",female,4,1,1,PP 9549,16.7,G6,S 13 | 12,1,1,"Bonnell, Miss. Elizabeth",female,58,0,0,113783,26.55,C103,S 14 | 13,0,3,"Saundercock, Mr. William Henry",male,20,0,0,A/5. 2151,8.05,,S 15 | 14,0,3,"Andersson, Mr. Anders Johan",male,39,1,5,347082,31.275,,S 16 | 15,0,3,"Vestrom, Miss. Hulda Amanda Adolfina",female,14,0,0,350406,7.8542,,S 17 | 16,1,2,"Hewlett, Mrs. (Mary D Kingcome) ",female,55,0,0,248706,16,,S 18 | 17,0,3,"Rice, Master. Eugene",male,2,4,1,382652,29.125,,Q 19 | 18,1,2,"Williams, Mr. Charles Eugene",male,,0,0,244373,13,,S 20 | 19,0,3,"Vander Planke, Mrs. Julius (Emelia Maria Vandemoortele)",female,31,1,0,345763,18,,S 21 | 20,1,3,"Masselmani, Mrs. Fatima",female,,0,0,2649,7.225,,C 22 | 21,0,2,"Fynney, Mr. Joseph J",male,35,0,0,239865,26,,S 23 | 22,1,2,"Beesley, Mr. Lawrence",male,34,0,0,248698,13,D56,S 24 | 23,1,3,"McGowan, Miss. Anna ""Annie""",female,15,0,0,330923,8.0292,,Q 25 | 24,1,1,"Sloper, Mr. William Thompson",male,28,0,0,113788,35.5,A6,S 26 | 25,0,3,"Palsson, Miss. Torborg Danira",female,8,3,1,349909,21.075,,S 27 | 26,1,3,"Asplund, Mrs. Carl Oscar (Selma Augusta Emilia Johansson)",female,38,1,5,347077,31.3875,,S 28 | 27,0,3,"Emir, Mr. Farred Chehab",male,,0,0,2631,7.225,,C 29 | 28,0,1,"Fortune, Mr. Charles Alexander",male,19,3,2,19950,263,C23 C25 C27,S 30 | 29,1,3,"O'Dwyer, Miss. Ellen ""Nellie""",female,,0,0,330959,7.8792,,Q 31 | 30,0,3,"Todoroff, Mr. Lalio",male,,0,0,349216,7.8958,,S 32 | 31,0,1,"Uruchurtu, Don. Manuel E",male,40,0,0,PC 17601,27.7208,,C 33 | 32,1,1,"Spencer, Mrs. William Augustus (Marie Eugenie)",female,,1,0,PC 17569,146.5208,B78,C 34 | 33,1,3,"Glynn, Miss. Mary Agatha",female,,0,0,335677,7.75,,Q 35 | 34,0,2,"Wheadon, Mr. Edward H",male,66,0,0,C.A. 24579,10.5,,S 36 | 35,0,1,"Meyer, Mr. Edgar Joseph",male,28,1,0,PC 17604,82.1708,,C 37 | 36,0,1,"Holverson, Mr. Alexander Oskar",male,42,1,0,113789,52,,S 38 | 37,1,3,"Mamee, Mr. Hanna",male,,0,0,2677,7.2292,,C 39 | 38,0,3,"Cann, Mr. Ernest Charles",male,21,0,0,A./5. 2152,8.05,,S 40 | 39,0,3,"Vander Planke, Miss. Augusta Maria",female,18,2,0,345764,18,,S 41 | 40,1,3,"Nicola-Yarred, Miss. Jamila",female,14,1,0,2651,11.2417,,C 42 | 41,0,3,"Ahlin, Mrs. Johan (Johanna Persdotter Larsson)",female,40,1,0,7546,9.475,,S 43 | 42,0,2,"Turpin, Mrs. William John Robert (Dorothy Ann Wonnacott)",female,27,1,0,11668,21,,S 44 | 43,0,3,"Kraeff, Mr. Theodor",male,,0,0,349253,7.8958,,C 45 | 44,1,2,"Laroche, Miss. Simonne Marie Anne Andree",female,3,1,2,SC/Paris 2123,41.5792,,C 46 | 45,1,3,"Devaney, Miss. Margaret Delia",female,19,0,0,330958,7.8792,,Q 47 | 46,0,3,"Rogers, Mr. William John",male,,0,0,S.C./A.4. 23567,8.05,,S 48 | 47,0,3,"Lennon, Mr. Denis",male,,1,0,370371,15.5,,Q 49 | 48,1,3,"O'Driscoll, Miss. Bridget",female,,0,0,14311,7.75,,Q 50 | 49,0,3,"Samaan, Mr. Youssef",male,,2,0,2662,21.6792,,C 51 | 50,0,3,"Arnold-Franchi, Mrs. Josef (Josefine Franchi)",female,18,1,0,349237,17.8,,S 52 | 51,0,3,"Panula, Master. Juha Niilo",male,7,4,1,3101295,39.6875,,S 53 | 52,0,3,"Nosworthy, Mr. Richard Cater",male,21,0,0,A/4. 39886,7.8,,S 54 | 53,1,1,"Harper, Mrs. Henry Sleeper (Myna Haxtun)",female,49,1,0,PC 17572,76.7292,D33,C 55 | 54,1,2,"Faunthorpe, Mrs. Lizzie (Elizabeth Anne Wilkinson)",female,29,1,0,2926,26,,S 56 | 55,0,1,"Ostby, Mr. Engelhart Cornelius",male,65,0,1,113509,61.9792,B30,C 57 | 56,1,1,"Woolner, Mr. Hugh",male,,0,0,19947,35.5,C52,S 58 | 57,1,2,"Rugg, Miss. Emily",female,21,0,0,C.A. 31026,10.5,,S 59 | 58,0,3,"Novel, Mr. Mansouer",male,28.5,0,0,2697,7.2292,,C 60 | 59,1,2,"West, Miss. Constance Mirium",female,5,1,2,C.A. 34651,27.75,,S 61 | 60,0,3,"Goodwin, Master. William Frederick",male,11,5,2,CA 2144,46.9,,S 62 | 61,0,3,"Sirayanian, Mr. Orsen",male,22,0,0,2669,7.2292,,C 63 | 62,1,1,"Icard, Miss. Amelie",female,38,0,0,113572,80,B28, 64 | 63,0,1,"Harris, Mr. Henry Birkhardt",male,45,1,0,36973,83.475,C83,S 65 | 64,0,3,"Skoog, Master. Harald",male,4,3,2,347088,27.9,,S 66 | 65,0,1,"Stewart, Mr. Albert A",male,,0,0,PC 17605,27.7208,,C 67 | 66,1,3,"Moubarek, Master. Gerios",male,,1,1,2661,15.2458,,C 68 | 67,1,2,"Nye, Mrs. (Elizabeth Ramell)",female,29,0,0,C.A. 29395,10.5,F33,S 69 | 68,0,3,"Crease, Mr. Ernest James",male,19,0,0,S.P. 3464,8.1583,,S 70 | 69,1,3,"Andersson, Miss. Erna Alexandra",female,17,4,2,3101281,7.925,,S 71 | 70,0,3,"Kink, Mr. Vincenz",male,26,2,0,315151,8.6625,,S 72 | 71,0,2,"Jenkin, Mr. Stephen Curnow",male,32,0,0,C.A. 33111,10.5,,S 73 | 72,0,3,"Goodwin, Miss. Lillian Amy",female,16,5,2,CA 2144,46.9,,S 74 | 73,0,2,"Hood, Mr. Ambrose Jr",male,21,0,0,S.O.C. 14879,73.5,,S 75 | 74,0,3,"Chronopoulos, Mr. Apostolos",male,26,1,0,2680,14.4542,,C 76 | 75,1,3,"Bing, Mr. Lee",male,32,0,0,1601,56.4958,,S 77 | 76,0,3,"Moen, Mr. Sigurd Hansen",male,25,0,0,348123,7.65,F G73,S 78 | 77,0,3,"Staneff, Mr. Ivan",male,,0,0,349208,7.8958,,S 79 | 78,0,3,"Moutal, Mr. Rahamin Haim",male,,0,0,374746,8.05,,S 80 | 79,1,2,"Caldwell, Master. Alden Gates",male,0.83,0,2,248738,29,,S 81 | 80,1,3,"Dowdell, Miss. Elizabeth",female,30,0,0,364516,12.475,,S 82 | 81,0,3,"Waelens, Mr. Achille",male,22,0,0,345767,9,,S 83 | 82,1,3,"Sheerlinck, Mr. Jan Baptist",male,29,0,0,345779,9.5,,S 84 | 83,1,3,"McDermott, Miss. Brigdet Delia",female,,0,0,330932,7.7875,,Q 85 | 84,0,1,"Carrau, Mr. Francisco M",male,28,0,0,113059,47.1,,S 86 | 85,1,2,"Ilett, Miss. Bertha",female,17,0,0,SO/C 14885,10.5,,S 87 | 86,1,3,"Backstrom, Mrs. Karl Alfred (Maria Mathilda Gustafsson)",female,33,3,0,3101278,15.85,,S 88 | 87,0,3,"Ford, Mr. William Neal",male,16,1,3,W./C. 6608,34.375,,S 89 | 88,0,3,"Slocovski, Mr. Selman Francis",male,,0,0,SOTON/OQ 392086,8.05,,S 90 | 89,1,1,"Fortune, Miss. Mabel Helen",female,23,3,2,19950,263,C23 C25 C27,S 91 | 90,0,3,"Celotti, Mr. Francesco",male,24,0,0,343275,8.05,,S 92 | 91,0,3,"Christmann, Mr. Emil",male,29,0,0,343276,8.05,,S 93 | 92,0,3,"Andreasson, Mr. Paul Edvin",male,20,0,0,347466,7.8542,,S 94 | 93,0,1,"Chaffee, Mr. Herbert Fuller",male,46,1,0,W.E.P. 5734,61.175,E31,S 95 | 94,0,3,"Dean, Mr. Bertram Frank",male,26,1,2,C.A. 2315,20.575,,S 96 | 95,0,3,"Coxon, Mr. Daniel",male,59,0,0,364500,7.25,,S 97 | 96,0,3,"Shorney, Mr. Charles Joseph",male,,0,0,374910,8.05,,S 98 | 97,0,1,"Goldschmidt, Mr. George B",male,71,0,0,PC 17754,34.6542,A5,C 99 | 98,1,1,"Greenfield, Mr. William Bertram",male,23,0,1,PC 17759,63.3583,D10 D12,C 100 | 99,1,2,"Doling, Mrs. John T (Ada Julia Bone)",female,34,0,1,231919,23,,S 101 | 100,0,2,"Kantor, Mr. Sinai",male,34,1,0,244367,26,,S 102 | 101,0,3,"Petranec, Miss. Matilda",female,28,0,0,349245,7.8958,,S 103 | 102,0,3,"Petroff, Mr. Pastcho (""Pentcho"")",male,,0,0,349215,7.8958,,S 104 | 103,0,1,"White, Mr. Richard Frasar",male,21,0,1,35281,77.2875,D26,S 105 | 104,0,3,"Johansson, Mr. Gustaf Joel",male,33,0,0,7540,8.6542,,S 106 | 105,0,3,"Gustafsson, Mr. Anders Vilhelm",male,37,2,0,3101276,7.925,,S 107 | 106,0,3,"Mionoff, Mr. Stoytcho",male,28,0,0,349207,7.8958,,S 108 | 107,1,3,"Salkjelsvik, Miss. Anna Kristine",female,21,0,0,343120,7.65,,S 109 | 108,1,3,"Moss, Mr. Albert Johan",male,,0,0,312991,7.775,,S 110 | 109,0,3,"Rekic, Mr. Tido",male,38,0,0,349249,7.8958,,S 111 | 110,1,3,"Moran, Miss. Bertha",female,,1,0,371110,24.15,,Q 112 | 111,0,1,"Porter, Mr. Walter Chamberlain",male,47,0,0,110465,52,C110,S 113 | 112,0,3,"Zabour, Miss. Hileni",female,14.5,1,0,2665,14.4542,,C 114 | 113,0,3,"Barton, Mr. David John",male,22,0,0,324669,8.05,,S 115 | 114,0,3,"Jussila, Miss. Katriina",female,20,1,0,4136,9.825,,S 116 | 115,0,3,"Attalah, Miss. Malake",female,17,0,0,2627,14.4583,,C 117 | 116,0,3,"Pekoniemi, Mr. Edvard",male,21,0,0,STON/O 2. 3101294,7.925,,S 118 | 117,0,3,"Connors, Mr. Patrick",male,70.5,0,0,370369,7.75,,Q 119 | 118,0,2,"Turpin, Mr. William John Robert",male,29,1,0,11668,21,,S 120 | 119,0,1,"Baxter, Mr. Quigg Edmond",male,24,0,1,PC 17558,247.5208,B58 B60,C 121 | 120,0,3,"Andersson, Miss. Ellis Anna Maria",female,2,4,2,347082,31.275,,S 122 | 121,0,2,"Hickman, Mr. Stanley George",male,21,2,0,S.O.C. 14879,73.5,,S 123 | 122,0,3,"Moore, Mr. Leonard Charles",male,,0,0,A4. 54510,8.05,,S 124 | 123,0,2,"Nasser, Mr. Nicholas",male,32.5,1,0,237736,30.0708,,C 125 | 124,1,2,"Webber, Miss. Susan",female,32.5,0,0,27267,13,E101,S 126 | 125,0,1,"White, Mr. Percival Wayland",male,54,0,1,35281,77.2875,D26,S 127 | 126,1,3,"Nicola-Yarred, Master. Elias",male,12,1,0,2651,11.2417,,C 128 | 127,0,3,"McMahon, Mr. Martin",male,,0,0,370372,7.75,,Q 129 | 128,1,3,"Madsen, Mr. Fridtjof Arne",male,24,0,0,C 17369,7.1417,,S 130 | 129,1,3,"Peter, Miss. Anna",female,,1,1,2668,22.3583,F E69,C 131 | 130,0,3,"Ekstrom, Mr. Johan",male,45,0,0,347061,6.975,,S 132 | 131,0,3,"Drazenoic, Mr. Jozef",male,33,0,0,349241,7.8958,,C 133 | 132,0,3,"Coelho, Mr. Domingos Fernandeo",male,20,0,0,SOTON/O.Q. 3101307,7.05,,S 134 | 133,0,3,"Robins, Mrs. Alexander A (Grace Charity Laury)",female,47,1,0,A/5. 3337,14.5,,S 135 | 134,1,2,"Weisz, Mrs. Leopold (Mathilde Francoise Pede)",female,29,1,0,228414,26,,S 136 | 135,0,2,"Sobey, Mr. Samuel James Hayden",male,25,0,0,C.A. 29178,13,,S 137 | 136,0,2,"Richard, Mr. Emile",male,23,0,0,SC/PARIS 2133,15.0458,,C 138 | 137,1,1,"Newsom, Miss. Helen Monypeny",female,19,0,2,11752,26.2833,D47,S 139 | 138,0,1,"Futrelle, Mr. Jacques Heath",male,37,1,0,113803,53.1,C123,S 140 | 139,0,3,"Osen, Mr. Olaf Elon",male,16,0,0,7534,9.2167,,S 141 | 140,0,1,"Giglio, Mr. Victor",male,24,0,0,PC 17593,79.2,B86,C 142 | 141,0,3,"Boulos, Mrs. Joseph (Sultana)",female,,0,2,2678,15.2458,,C 143 | 142,1,3,"Nysten, Miss. Anna Sofia",female,22,0,0,347081,7.75,,S 144 | 143,1,3,"Hakkarainen, Mrs. Pekka Pietari (Elin Matilda Dolck)",female,24,1,0,STON/O2. 3101279,15.85,,S 145 | 144,0,3,"Burke, Mr. Jeremiah",male,19,0,0,365222,6.75,,Q 146 | 145,0,2,"Andrew, Mr. Edgardo Samuel",male,18,0,0,231945,11.5,,S 147 | 146,0,2,"Nicholls, Mr. Joseph Charles",male,19,1,1,C.A. 33112,36.75,,S 148 | 147,1,3,"Andersson, Mr. August Edvard (""Wennerstrom"")",male,27,0,0,350043,7.7958,,S 149 | 148,0,3,"Ford, Miss. Robina Maggie ""Ruby""",female,9,2,2,W./C. 6608,34.375,,S 150 | 149,0,2,"Navratil, Mr. Michel (""Louis M Hoffman"")",male,36.5,0,2,230080,26,F2,S 151 | 150,0,2,"Byles, Rev. Thomas Roussel Davids",male,42,0,0,244310,13,,S 152 | 151,0,2,"Bateman, Rev. Robert James",male,51,0,0,S.O.P. 1166,12.525,,S 153 | 152,1,1,"Pears, Mrs. Thomas (Edith Wearne)",female,22,1,0,113776,66.6,C2,S 154 | 153,0,3,"Meo, Mr. Alfonzo",male,55.5,0,0,A.5. 11206,8.05,,S 155 | 154,0,3,"van Billiard, Mr. Austin Blyler",male,40.5,0,2,A/5. 851,14.5,,S 156 | 155,0,3,"Olsen, Mr. Ole Martin",male,,0,0,Fa 265302,7.3125,,S 157 | 156,0,1,"Williams, Mr. Charles Duane",male,51,0,1,PC 17597,61.3792,,C 158 | 157,1,3,"Gilnagh, Miss. Katherine ""Katie""",female,16,0,0,35851,7.7333,,Q 159 | 158,0,3,"Corn, Mr. Harry",male,30,0,0,SOTON/OQ 392090,8.05,,S 160 | 159,0,3,"Smiljanic, Mr. Mile",male,,0,0,315037,8.6625,,S 161 | 160,0,3,"Sage, Master. Thomas Henry",male,,8,2,CA. 2343,69.55,,S 162 | 161,0,3,"Cribb, Mr. John Hatfield",male,44,0,1,371362,16.1,,S 163 | 162,1,2,"Watt, Mrs. James (Elizabeth ""Bessie"" Inglis Milne)",female,40,0,0,C.A. 33595,15.75,,S 164 | 163,0,3,"Bengtsson, Mr. John Viktor",male,26,0,0,347068,7.775,,S 165 | 164,0,3,"Calic, Mr. Jovo",male,17,0,0,315093,8.6625,,S 166 | 165,0,3,"Panula, Master. Eino Viljami",male,1,4,1,3101295,39.6875,,S 167 | 166,1,3,"Goldsmith, Master. Frank John William ""Frankie""",male,9,0,2,363291,20.525,,S 168 | 167,1,1,"Chibnall, Mrs. (Edith Martha Bowerman)",female,,0,1,113505,55,E33,S 169 | 168,0,3,"Skoog, Mrs. William (Anna Bernhardina Karlsson)",female,45,1,4,347088,27.9,,S 170 | 169,0,1,"Baumann, Mr. John D",male,,0,0,PC 17318,25.925,,S 171 | 170,0,3,"Ling, Mr. Lee",male,28,0,0,1601,56.4958,,S 172 | 171,0,1,"Van der hoef, Mr. Wyckoff",male,61,0,0,111240,33.5,B19,S 173 | 172,0,3,"Rice, Master. Arthur",male,4,4,1,382652,29.125,,Q 174 | 173,1,3,"Johnson, Miss. Eleanor Ileen",female,1,1,1,347742,11.1333,,S 175 | 174,0,3,"Sivola, Mr. Antti Wilhelm",male,21,0,0,STON/O 2. 3101280,7.925,,S 176 | 175,0,1,"Smith, Mr. James Clinch",male,56,0,0,17764,30.6958,A7,C 177 | 176,0,3,"Klasen, Mr. Klas Albin",male,18,1,1,350404,7.8542,,S 178 | 177,0,3,"Lefebre, Master. Henry Forbes",male,,3,1,4133,25.4667,,S 179 | 178,0,1,"Isham, Miss. Ann Elizabeth",female,50,0,0,PC 17595,28.7125,C49,C 180 | 179,0,2,"Hale, Mr. Reginald",male,30,0,0,250653,13,,S 181 | 180,0,3,"Leonard, Mr. Lionel",male,36,0,0,LINE,0,,S 182 | 181,0,3,"Sage, Miss. Constance Gladys",female,,8,2,CA. 2343,69.55,,S 183 | 182,0,2,"Pernot, Mr. Rene",male,,0,0,SC/PARIS 2131,15.05,,C 184 | 183,0,3,"Asplund, Master. Clarence Gustaf Hugo",male,9,4,2,347077,31.3875,,S 185 | 184,1,2,"Becker, Master. Richard F",male,1,2,1,230136,39,F4,S 186 | 185,1,3,"Kink-Heilmann, Miss. Luise Gretchen",female,4,0,2,315153,22.025,,S 187 | 186,0,1,"Rood, Mr. Hugh Roscoe",male,,0,0,113767,50,A32,S 188 | 187,1,3,"O'Brien, Mrs. Thomas (Johanna ""Hannah"" Godfrey)",female,,1,0,370365,15.5,,Q 189 | 188,1,1,"Romaine, Mr. Charles Hallace (""Mr C Rolmane"")",male,45,0,0,111428,26.55,,S 190 | 189,0,3,"Bourke, Mr. John",male,40,1,1,364849,15.5,,Q 191 | 190,0,3,"Turcin, Mr. Stjepan",male,36,0,0,349247,7.8958,,S 192 | 191,1,2,"Pinsky, Mrs. (Rosa)",female,32,0,0,234604,13,,S 193 | 192,0,2,"Carbines, Mr. William",male,19,0,0,28424,13,,S 194 | 193,1,3,"Andersen-Jensen, Miss. Carla Christine Nielsine",female,19,1,0,350046,7.8542,,S 195 | 194,1,2,"Navratil, Master. Michel M",male,3,1,1,230080,26,F2,S 196 | 195,1,1,"Brown, Mrs. James Joseph (Margaret Tobin)",female,44,0,0,PC 17610,27.7208,B4,C 197 | 196,1,1,"Lurette, Miss. Elise",female,58,0,0,PC 17569,146.5208,B80,C 198 | 197,0,3,"Mernagh, Mr. Robert",male,,0,0,368703,7.75,,Q 199 | 198,0,3,"Olsen, Mr. Karl Siegwart Andreas",male,42,0,1,4579,8.4042,,S 200 | 199,1,3,"Madigan, Miss. Margaret ""Maggie""",female,,0,0,370370,7.75,,Q 201 | 200,0,2,"Yrois, Miss. Henriette (""Mrs Harbeck"")",female,24,0,0,248747,13,,S 202 | 201,0,3,"Vande Walle, Mr. Nestor Cyriel",male,28,0,0,345770,9.5,,S 203 | 202,0,3,"Sage, Mr. Frederick",male,,8,2,CA. 2343,69.55,,S 204 | 203,0,3,"Johanson, Mr. Jakob Alfred",male,34,0,0,3101264,6.4958,,S 205 | 204,0,3,"Youseff, Mr. Gerious",male,45.5,0,0,2628,7.225,,C 206 | 205,1,3,"Cohen, Mr. Gurshon ""Gus""",male,18,0,0,A/5 3540,8.05,,S 207 | 206,0,3,"Strom, Miss. Telma Matilda",female,2,0,1,347054,10.4625,G6,S 208 | 207,0,3,"Backstrom, Mr. Karl Alfred",male,32,1,0,3101278,15.85,,S 209 | 208,1,3,"Albimona, Mr. Nassef Cassem",male,26,0,0,2699,18.7875,,C 210 | 209,1,3,"Carr, Miss. Helen ""Ellen""",female,16,0,0,367231,7.75,,Q 211 | 210,1,1,"Blank, Mr. Henry",male,40,0,0,112277,31,A31,C 212 | 211,0,3,"Ali, Mr. Ahmed",male,24,0,0,SOTON/O.Q. 3101311,7.05,,S 213 | 212,1,2,"Cameron, Miss. Clear Annie",female,35,0,0,F.C.C. 13528,21,,S 214 | 213,0,3,"Perkin, Mr. John Henry",male,22,0,0,A/5 21174,7.25,,S 215 | 214,0,2,"Givard, Mr. Hans Kristensen",male,30,0,0,250646,13,,S 216 | 215,0,3,"Kiernan, Mr. Philip",male,,1,0,367229,7.75,,Q 217 | 216,1,1,"Newell, Miss. Madeleine",female,31,1,0,35273,113.275,D36,C 218 | 217,1,3,"Honkanen, Miss. Eliina",female,27,0,0,STON/O2. 3101283,7.925,,S 219 | 218,0,2,"Jacobsohn, Mr. Sidney Samuel",male,42,1,0,243847,27,,S 220 | 219,1,1,"Bazzani, Miss. Albina",female,32,0,0,11813,76.2917,D15,C 221 | 220,0,2,"Harris, Mr. Walter",male,30,0,0,W/C 14208,10.5,,S 222 | 221,1,3,"Sunderland, Mr. Victor Francis",male,16,0,0,SOTON/OQ 392089,8.05,,S 223 | 222,0,2,"Bracken, Mr. James H",male,27,0,0,220367,13,,S 224 | 223,0,3,"Green, Mr. George Henry",male,51,0,0,21440,8.05,,S 225 | 224,0,3,"Nenkoff, Mr. Christo",male,,0,0,349234,7.8958,,S 226 | 225,1,1,"Hoyt, Mr. Frederick Maxfield",male,38,1,0,19943,90,C93,S 227 | 226,0,3,"Berglund, Mr. Karl Ivar Sven",male,22,0,0,PP 4348,9.35,,S 228 | 227,1,2,"Mellors, Mr. William John",male,19,0,0,SW/PP 751,10.5,,S 229 | 228,0,3,"Lovell, Mr. John Hall (""Henry"")",male,20.5,0,0,A/5 21173,7.25,,S 230 | 229,0,2,"Fahlstrom, Mr. Arne Jonas",male,18,0,0,236171,13,,S 231 | 230,0,3,"Lefebre, Miss. Mathilde",female,,3,1,4133,25.4667,,S 232 | 231,1,1,"Harris, Mrs. Henry Birkhardt (Irene Wallach)",female,35,1,0,36973,83.475,C83,S 233 | 232,0,3,"Larsson, Mr. Bengt Edvin",male,29,0,0,347067,7.775,,S 234 | 233,0,2,"Sjostedt, Mr. Ernst Adolf",male,59,0,0,237442,13.5,,S 235 | 234,1,3,"Asplund, Miss. Lillian Gertrud",female,5,4,2,347077,31.3875,,S 236 | 235,0,2,"Leyson, Mr. Robert William Norman",male,24,0,0,C.A. 29566,10.5,,S 237 | 236,0,3,"Harknett, Miss. Alice Phoebe",female,,0,0,W./C. 6609,7.55,,S 238 | 237,0,2,"Hold, Mr. Stephen",male,44,1,0,26707,26,,S 239 | 238,1,2,"Collyer, Miss. Marjorie ""Lottie""",female,8,0,2,C.A. 31921,26.25,,S 240 | 239,0,2,"Pengelly, Mr. Frederick William",male,19,0,0,28665,10.5,,S 241 | 240,0,2,"Hunt, Mr. George Henry",male,33,0,0,SCO/W 1585,12.275,,S 242 | 241,0,3,"Zabour, Miss. Thamine",female,,1,0,2665,14.4542,,C 243 | 242,1,3,"Murphy, Miss. Katherine ""Kate""",female,,1,0,367230,15.5,,Q 244 | 243,0,2,"Coleridge, Mr. Reginald Charles",male,29,0,0,W./C. 14263,10.5,,S 245 | 244,0,3,"Maenpaa, Mr. Matti Alexanteri",male,22,0,0,STON/O 2. 3101275,7.125,,S 246 | 245,0,3,"Attalah, Mr. Sleiman",male,30,0,0,2694,7.225,,C 247 | 246,0,1,"Minahan, Dr. William Edward",male,44,2,0,19928,90,C78,Q 248 | 247,0,3,"Lindahl, Miss. Agda Thorilda Viktoria",female,25,0,0,347071,7.775,,S 249 | 248,1,2,"Hamalainen, Mrs. William (Anna)",female,24,0,2,250649,14.5,,S 250 | 249,1,1,"Beckwith, Mr. Richard Leonard",male,37,1,1,11751,52.5542,D35,S 251 | 250,0,2,"Carter, Rev. Ernest Courtenay",male,54,1,0,244252,26,,S 252 | 251,0,3,"Reed, Mr. James George",male,,0,0,362316,7.25,,S 253 | 252,0,3,"Strom, Mrs. Wilhelm (Elna Matilda Persson)",female,29,1,1,347054,10.4625,G6,S 254 | 253,0,1,"Stead, Mr. William Thomas",male,62,0,0,113514,26.55,C87,S 255 | 254,0,3,"Lobb, Mr. William Arthur",male,30,1,0,A/5. 3336,16.1,,S 256 | 255,0,3,"Rosblom, Mrs. Viktor (Helena Wilhelmina)",female,41,0,2,370129,20.2125,,S 257 | 256,1,3,"Touma, Mrs. Darwis (Hanne Youssef Razi)",female,29,0,2,2650,15.2458,,C 258 | 257,1,1,"Thorne, Mrs. Gertrude Maybelle",female,,0,0,PC 17585,79.2,,C 259 | 258,1,1,"Cherry, Miss. Gladys",female,30,0,0,110152,86.5,B77,S 260 | 259,1,1,"Ward, Miss. Anna",female,35,0,0,PC 17755,512.3292,,C 261 | 260,1,2,"Parrish, Mrs. (Lutie Davis)",female,50,0,1,230433,26,,S 262 | 261,0,3,"Smith, Mr. Thomas",male,,0,0,384461,7.75,,Q 263 | 262,1,3,"Asplund, Master. Edvin Rojj Felix",male,3,4,2,347077,31.3875,,S 264 | 263,0,1,"Taussig, Mr. Emil",male,52,1,1,110413,79.65,E67,S 265 | 264,0,1,"Harrison, Mr. William",male,40,0,0,112059,0,B94,S 266 | 265,0,3,"Henry, Miss. Delia",female,,0,0,382649,7.75,,Q 267 | 266,0,2,"Reeves, Mr. David",male,36,0,0,C.A. 17248,10.5,,S 268 | 267,0,3,"Panula, Mr. Ernesti Arvid",male,16,4,1,3101295,39.6875,,S 269 | 268,1,3,"Persson, Mr. Ernst Ulrik",male,25,1,0,347083,7.775,,S 270 | 269,1,1,"Graham, Mrs. William Thompson (Edith Junkins)",female,58,0,1,PC 17582,153.4625,C125,S 271 | 270,1,1,"Bissette, Miss. Amelia",female,35,0,0,PC 17760,135.6333,C99,S 272 | 271,0,1,"Cairns, Mr. Alexander",male,,0,0,113798,31,,S 273 | 272,1,3,"Tornquist, Mr. William Henry",male,25,0,0,LINE,0,,S 274 | 273,1,2,"Mellinger, Mrs. (Elizabeth Anne Maidment)",female,41,0,1,250644,19.5,,S 275 | 274,0,1,"Natsch, Mr. Charles H",male,37,0,1,PC 17596,29.7,C118,C 276 | 275,1,3,"Healy, Miss. Hanora ""Nora""",female,,0,0,370375,7.75,,Q 277 | 276,1,1,"Andrews, Miss. Kornelia Theodosia",female,63,1,0,13502,77.9583,D7,S 278 | 277,0,3,"Lindblom, Miss. Augusta Charlotta",female,45,0,0,347073,7.75,,S 279 | 278,0,2,"Parkes, Mr. Francis ""Frank""",male,,0,0,239853,0,,S 280 | 279,0,3,"Rice, Master. Eric",male,7,4,1,382652,29.125,,Q 281 | 280,1,3,"Abbott, Mrs. Stanton (Rosa Hunt)",female,35,1,1,C.A. 2673,20.25,,S 282 | 281,0,3,"Duane, Mr. Frank",male,65,0,0,336439,7.75,,Q 283 | 282,0,3,"Olsson, Mr. Nils Johan Goransson",male,28,0,0,347464,7.8542,,S 284 | 283,0,3,"de Pelsmaeker, Mr. Alfons",male,16,0,0,345778,9.5,,S 285 | 284,1,3,"Dorking, Mr. Edward Arthur",male,19,0,0,A/5. 10482,8.05,,S 286 | 285,0,1,"Smith, Mr. Richard William",male,,0,0,113056,26,A19,S 287 | 286,0,3,"Stankovic, Mr. Ivan",male,33,0,0,349239,8.6625,,C 288 | 287,1,3,"de Mulder, Mr. Theodore",male,30,0,0,345774,9.5,,S 289 | 288,0,3,"Naidenoff, Mr. Penko",male,22,0,0,349206,7.8958,,S 290 | 289,1,2,"Hosono, Mr. Masabumi",male,42,0,0,237798,13,,S 291 | 290,1,3,"Connolly, Miss. Kate",female,22,0,0,370373,7.75,,Q 292 | 291,1,1,"Barber, Miss. Ellen ""Nellie""",female,26,0,0,19877,78.85,,S 293 | 292,1,1,"Bishop, Mrs. Dickinson H (Helen Walton)",female,19,1,0,11967,91.0792,B49,C 294 | 293,0,2,"Levy, Mr. Rene Jacques",male,36,0,0,SC/Paris 2163,12.875,D,C 295 | 294,0,3,"Haas, Miss. Aloisia",female,24,0,0,349236,8.85,,S 296 | 295,0,3,"Mineff, Mr. Ivan",male,24,0,0,349233,7.8958,,S 297 | 296,0,1,"Lewy, Mr. Ervin G",male,,0,0,PC 17612,27.7208,,C 298 | 297,0,3,"Hanna, Mr. Mansour",male,23.5,0,0,2693,7.2292,,C 299 | 298,0,1,"Allison, Miss. Helen Loraine",female,2,1,2,113781,151.55,C22 C26,S 300 | 299,1,1,"Saalfeld, Mr. Adolphe",male,,0,0,19988,30.5,C106,S 301 | 300,1,1,"Baxter, Mrs. James (Helene DeLaudeniere Chaput)",female,50,0,1,PC 17558,247.5208,B58 B60,C 302 | 301,1,3,"Kelly, Miss. Anna Katherine ""Annie Kate""",female,,0,0,9234,7.75,,Q 303 | 302,1,3,"McCoy, Mr. Bernard",male,,2,0,367226,23.25,,Q 304 | 303,0,3,"Johnson, Mr. William Cahoone Jr",male,19,0,0,LINE,0,,S 305 | 304,1,2,"Keane, Miss. Nora A",female,,0,0,226593,12.35,E101,Q 306 | 305,0,3,"Williams, Mr. Howard Hugh ""Harry""",male,,0,0,A/5 2466,8.05,,S 307 | 306,1,1,"Allison, Master. Hudson Trevor",male,0.92,1,2,113781,151.55,C22 C26,S 308 | 307,1,1,"Fleming, Miss. Margaret",female,,0,0,17421,110.8833,,C 309 | 308,1,1,"Penasco y Castellana, Mrs. Victor de Satode (Maria Josefa Perez de Soto y Vallejo)",female,17,1,0,PC 17758,108.9,C65,C 310 | 309,0,2,"Abelson, Mr. Samuel",male,30,1,0,P/PP 3381,24,,C 311 | 310,1,1,"Francatelli, Miss. Laura Mabel",female,30,0,0,PC 17485,56.9292,E36,C 312 | 311,1,1,"Hays, Miss. Margaret Bechstein",female,24,0,0,11767,83.1583,C54,C 313 | 312,1,1,"Ryerson, Miss. Emily Borie",female,18,2,2,PC 17608,262.375,B57 B59 B63 B66,C 314 | 313,0,2,"Lahtinen, Mrs. William (Anna Sylfven)",female,26,1,1,250651,26,,S 315 | 314,0,3,"Hendekovic, Mr. Ignjac",male,28,0,0,349243,7.8958,,S 316 | 315,0,2,"Hart, Mr. Benjamin",male,43,1,1,F.C.C. 13529,26.25,,S 317 | 316,1,3,"Nilsson, Miss. Helmina Josefina",female,26,0,0,347470,7.8542,,S 318 | 317,1,2,"Kantor, Mrs. Sinai (Miriam Sternin)",female,24,1,0,244367,26,,S 319 | 318,0,2,"Moraweck, Dr. Ernest",male,54,0,0,29011,14,,S 320 | 319,1,1,"Wick, Miss. Mary Natalie",female,31,0,2,36928,164.8667,C7,S 321 | 320,1,1,"Spedden, Mrs. Frederic Oakley (Margaretta Corning Stone)",female,40,1,1,16966,134.5,E34,C 322 | 321,0,3,"Dennis, Mr. Samuel",male,22,0,0,A/5 21172,7.25,,S 323 | 322,0,3,"Danoff, Mr. Yoto",male,27,0,0,349219,7.8958,,S 324 | 323,1,2,"Slayter, Miss. Hilda Mary",female,30,0,0,234818,12.35,,Q 325 | 324,1,2,"Caldwell, Mrs. Albert Francis (Sylvia Mae Harbaugh)",female,22,1,1,248738,29,,S 326 | 325,0,3,"Sage, Mr. George John Jr",male,,8,2,CA. 2343,69.55,,S 327 | 326,1,1,"Young, Miss. Marie Grice",female,36,0,0,PC 17760,135.6333,C32,C 328 | 327,0,3,"Nysveen, Mr. Johan Hansen",male,61,0,0,345364,6.2375,,S 329 | 328,1,2,"Ball, Mrs. (Ada E Hall)",female,36,0,0,28551,13,D,S 330 | 329,1,3,"Goldsmith, Mrs. Frank John (Emily Alice Brown)",female,31,1,1,363291,20.525,,S 331 | 330,1,1,"Hippach, Miss. Jean Gertrude",female,16,0,1,111361,57.9792,B18,C 332 | 331,1,3,"McCoy, Miss. Agnes",female,,2,0,367226,23.25,,Q 333 | 332,0,1,"Partner, Mr. Austen",male,45.5,0,0,113043,28.5,C124,S 334 | 333,0,1,"Graham, Mr. George Edward",male,38,0,1,PC 17582,153.4625,C91,S 335 | 334,0,3,"Vander Planke, Mr. Leo Edmondus",male,16,2,0,345764,18,,S 336 | 335,1,1,"Frauenthal, Mrs. Henry William (Clara Heinsheimer)",female,,1,0,PC 17611,133.65,,S 337 | 336,0,3,"Denkoff, Mr. Mitto",male,,0,0,349225,7.8958,,S 338 | 337,0,1,"Pears, Mr. Thomas Clinton",male,29,1,0,113776,66.6,C2,S 339 | 338,1,1,"Burns, Miss. Elizabeth Margaret",female,41,0,0,16966,134.5,E40,C 340 | 339,1,3,"Dahl, Mr. Karl Edwart",male,45,0,0,7598,8.05,,S 341 | 340,0,1,"Blackwell, Mr. Stephen Weart",male,45,0,0,113784,35.5,T,S 342 | 341,1,2,"Navratil, Master. Edmond Roger",male,2,1,1,230080,26,F2,S 343 | 342,1,1,"Fortune, Miss. Alice Elizabeth",female,24,3,2,19950,263,C23 C25 C27,S 344 | 343,0,2,"Collander, Mr. Erik Gustaf",male,28,0,0,248740,13,,S 345 | 344,0,2,"Sedgwick, Mr. Charles Frederick Waddington",male,25,0,0,244361,13,,S 346 | 345,0,2,"Fox, Mr. Stanley Hubert",male,36,0,0,229236,13,,S 347 | 346,1,2,"Brown, Miss. Amelia ""Mildred""",female,24,0,0,248733,13,F33,S 348 | 347,1,2,"Smith, Miss. Marion Elsie",female,40,0,0,31418,13,,S 349 | 348,1,3,"Davison, Mrs. Thomas Henry (Mary E Finck)",female,,1,0,386525,16.1,,S 350 | 349,1,3,"Coutts, Master. William Loch ""William""",male,3,1,1,C.A. 37671,15.9,,S 351 | 350,0,3,"Dimic, Mr. Jovan",male,42,0,0,315088,8.6625,,S 352 | 351,0,3,"Odahl, Mr. Nils Martin",male,23,0,0,7267,9.225,,S 353 | 352,0,1,"Williams-Lambert, Mr. Fletcher Fellows",male,,0,0,113510,35,C128,S 354 | 353,0,3,"Elias, Mr. Tannous",male,15,1,1,2695,7.2292,,C 355 | 354,0,3,"Arnold-Franchi, Mr. Josef",male,25,1,0,349237,17.8,,S 356 | 355,0,3,"Yousif, Mr. Wazli",male,,0,0,2647,7.225,,C 357 | 356,0,3,"Vanden Steen, Mr. Leo Peter",male,28,0,0,345783,9.5,,S 358 | 357,1,1,"Bowerman, Miss. Elsie Edith",female,22,0,1,113505,55,E33,S 359 | 358,0,2,"Funk, Miss. Annie Clemmer",female,38,0,0,237671,13,,S 360 | 359,1,3,"McGovern, Miss. Mary",female,,0,0,330931,7.8792,,Q 361 | 360,1,3,"Mockler, Miss. Helen Mary ""Ellie""",female,,0,0,330980,7.8792,,Q 362 | 361,0,3,"Skoog, Mr. Wilhelm",male,40,1,4,347088,27.9,,S 363 | 362,0,2,"del Carlo, Mr. Sebastiano",male,29,1,0,SC/PARIS 2167,27.7208,,C 364 | 363,0,3,"Barbara, Mrs. (Catherine David)",female,45,0,1,2691,14.4542,,C 365 | 364,0,3,"Asim, Mr. Adola",male,35,0,0,SOTON/O.Q. 3101310,7.05,,S 366 | 365,0,3,"O'Brien, Mr. Thomas",male,,1,0,370365,15.5,,Q 367 | 366,0,3,"Adahl, Mr. Mauritz Nils Martin",male,30,0,0,C 7076,7.25,,S 368 | 367,1,1,"Warren, Mrs. Frank Manley (Anna Sophia Atkinson)",female,60,1,0,110813,75.25,D37,C 369 | 368,1,3,"Moussa, Mrs. (Mantoura Boulos)",female,,0,0,2626,7.2292,,C 370 | 369,1,3,"Jermyn, Miss. Annie",female,,0,0,14313,7.75,,Q 371 | 370,1,1,"Aubart, Mme. Leontine Pauline",female,24,0,0,PC 17477,69.3,B35,C 372 | 371,1,1,"Harder, Mr. George Achilles",male,25,1,0,11765,55.4417,E50,C 373 | 372,0,3,"Wiklund, Mr. Jakob Alfred",male,18,1,0,3101267,6.4958,,S 374 | 373,0,3,"Beavan, Mr. William Thomas",male,19,0,0,323951,8.05,,S 375 | 374,0,1,"Ringhini, Mr. Sante",male,22,0,0,PC 17760,135.6333,,C 376 | 375,0,3,"Palsson, Miss. Stina Viola",female,3,3,1,349909,21.075,,S 377 | 376,1,1,"Meyer, Mrs. Edgar Joseph (Leila Saks)",female,,1,0,PC 17604,82.1708,,C 378 | 377,1,3,"Landergren, Miss. Aurora Adelia",female,22,0,0,C 7077,7.25,,S 379 | 378,0,1,"Widener, Mr. Harry Elkins",male,27,0,2,113503,211.5,C82,C 380 | 379,0,3,"Betros, Mr. Tannous",male,20,0,0,2648,4.0125,,C 381 | 380,0,3,"Gustafsson, Mr. Karl Gideon",male,19,0,0,347069,7.775,,S 382 | 381,1,1,"Bidois, Miss. Rosalie",female,42,0,0,PC 17757,227.525,,C 383 | 382,1,3,"Nakid, Miss. Maria (""Mary"")",female,1,0,2,2653,15.7417,,C 384 | 383,0,3,"Tikkanen, Mr. Juho",male,32,0,0,STON/O 2. 3101293,7.925,,S 385 | 384,1,1,"Holverson, Mrs. Alexander Oskar (Mary Aline Towner)",female,35,1,0,113789,52,,S 386 | 385,0,3,"Plotcharsky, Mr. Vasil",male,,0,0,349227,7.8958,,S 387 | 386,0,2,"Davies, Mr. Charles Henry",male,18,0,0,S.O.C. 14879,73.5,,S 388 | 387,0,3,"Goodwin, Master. Sidney Leonard",male,1,5,2,CA 2144,46.9,,S 389 | 388,1,2,"Buss, Miss. Kate",female,36,0,0,27849,13,,S 390 | 389,0,3,"Sadlier, Mr. Matthew",male,,0,0,367655,7.7292,,Q 391 | 390,1,2,"Lehmann, Miss. Bertha",female,17,0,0,SC 1748,12,,C 392 | 391,1,1,"Carter, Mr. William Ernest",male,36,1,2,113760,120,B96 B98,S 393 | 392,1,3,"Jansson, Mr. Carl Olof",male,21,0,0,350034,7.7958,,S 394 | 393,0,3,"Gustafsson, Mr. Johan Birger",male,28,2,0,3101277,7.925,,S 395 | 394,1,1,"Newell, Miss. Marjorie",female,23,1,0,35273,113.275,D36,C 396 | 395,1,3,"Sandstrom, Mrs. Hjalmar (Agnes Charlotta Bengtsson)",female,24,0,2,PP 9549,16.7,G6,S 397 | 396,0,3,"Johansson, Mr. Erik",male,22,0,0,350052,7.7958,,S 398 | 397,0,3,"Olsson, Miss. Elina",female,31,0,0,350407,7.8542,,S 399 | 398,0,2,"McKane, Mr. Peter David",male,46,0,0,28403,26,,S 400 | 399,0,2,"Pain, Dr. Alfred",male,23,0,0,244278,10.5,,S 401 | 400,1,2,"Trout, Mrs. William H (Jessie L)",female,28,0,0,240929,12.65,,S 402 | 401,1,3,"Niskanen, Mr. Juha",male,39,0,0,STON/O 2. 3101289,7.925,,S 403 | 402,0,3,"Adams, Mr. John",male,26,0,0,341826,8.05,,S 404 | 403,0,3,"Jussila, Miss. Mari Aina",female,21,1,0,4137,9.825,,S 405 | 404,0,3,"Hakkarainen, Mr. Pekka Pietari",male,28,1,0,STON/O2. 3101279,15.85,,S 406 | 405,0,3,"Oreskovic, Miss. Marija",female,20,0,0,315096,8.6625,,S 407 | 406,0,2,"Gale, Mr. Shadrach",male,34,1,0,28664,21,,S 408 | 407,0,3,"Widegren, Mr. Carl/Charles Peter",male,51,0,0,347064,7.75,,S 409 | 408,1,2,"Richards, Master. William Rowe",male,3,1,1,29106,18.75,,S 410 | 409,0,3,"Birkeland, Mr. Hans Martin Monsen",male,21,0,0,312992,7.775,,S 411 | 410,0,3,"Lefebre, Miss. Ida",female,,3,1,4133,25.4667,,S 412 | 411,0,3,"Sdycoff, Mr. Todor",male,,0,0,349222,7.8958,,S 413 | 412,0,3,"Hart, Mr. Henry",male,,0,0,394140,6.8583,,Q 414 | 413,1,1,"Minahan, Miss. Daisy E",female,33,1,0,19928,90,C78,Q 415 | 414,0,2,"Cunningham, Mr. Alfred Fleming",male,,0,0,239853,0,,S 416 | 415,1,3,"Sundman, Mr. Johan Julian",male,44,0,0,STON/O 2. 3101269,7.925,,S 417 | 416,0,3,"Meek, Mrs. Thomas (Annie Louise Rowley)",female,,0,0,343095,8.05,,S 418 | 417,1,2,"Drew, Mrs. James Vivian (Lulu Thorne Christian)",female,34,1,1,28220,32.5,,S 419 | 418,1,2,"Silven, Miss. Lyyli Karoliina",female,18,0,2,250652,13,,S 420 | 419,0,2,"Matthews, Mr. William John",male,30,0,0,28228,13,,S 421 | 420,0,3,"Van Impe, Miss. Catharina",female,10,0,2,345773,24.15,,S 422 | 421,0,3,"Gheorgheff, Mr. Stanio",male,,0,0,349254,7.8958,,C 423 | 422,0,3,"Charters, Mr. David",male,21,0,0,A/5. 13032,7.7333,,Q 424 | 423,0,3,"Zimmerman, Mr. Leo",male,29,0,0,315082,7.875,,S 425 | 424,0,3,"Danbom, Mrs. Ernst Gilbert (Anna Sigrid Maria Brogren)",female,28,1,1,347080,14.4,,S 426 | 425,0,3,"Rosblom, Mr. Viktor Richard",male,18,1,1,370129,20.2125,,S 427 | 426,0,3,"Wiseman, Mr. Phillippe",male,,0,0,A/4. 34244,7.25,,S 428 | 427,1,2,"Clarke, Mrs. Charles V (Ada Maria Winfield)",female,28,1,0,2003,26,,S 429 | 428,1,2,"Phillips, Miss. Kate Florence (""Mrs Kate Louise Phillips Marshall"")",female,19,0,0,250655,26,,S 430 | 429,0,3,"Flynn, Mr. James",male,,0,0,364851,7.75,,Q 431 | 430,1,3,"Pickard, Mr. Berk (Berk Trembisky)",male,32,0,0,SOTON/O.Q. 392078,8.05,E10,S 432 | 431,1,1,"Bjornstrom-Steffansson, Mr. Mauritz Hakan",male,28,0,0,110564,26.55,C52,S 433 | 432,1,3,"Thorneycroft, Mrs. Percival (Florence Kate White)",female,,1,0,376564,16.1,,S 434 | 433,1,2,"Louch, Mrs. Charles Alexander (Alice Adelaide Slow)",female,42,1,0,SC/AH 3085,26,,S 435 | 434,0,3,"Kallio, Mr. Nikolai Erland",male,17,0,0,STON/O 2. 3101274,7.125,,S 436 | 435,0,1,"Silvey, Mr. William Baird",male,50,1,0,13507,55.9,E44,S 437 | 436,1,1,"Carter, Miss. Lucile Polk",female,14,1,2,113760,120,B96 B98,S 438 | 437,0,3,"Ford, Miss. Doolina Margaret ""Daisy""",female,21,2,2,W./C. 6608,34.375,,S 439 | 438,1,2,"Richards, Mrs. Sidney (Emily Hocking)",female,24,2,3,29106,18.75,,S 440 | 439,0,1,"Fortune, Mr. Mark",male,64,1,4,19950,263,C23 C25 C27,S 441 | 440,0,2,"Kvillner, Mr. Johan Henrik Johannesson",male,31,0,0,C.A. 18723,10.5,,S 442 | 441,1,2,"Hart, Mrs. Benjamin (Esther Ada Bloomfield)",female,45,1,1,F.C.C. 13529,26.25,,S 443 | 442,0,3,"Hampe, Mr. Leon",male,20,0,0,345769,9.5,,S 444 | 443,0,3,"Petterson, Mr. Johan Emil",male,25,1,0,347076,7.775,,S 445 | 444,1,2,"Reynaldo, Ms. Encarnacion",female,28,0,0,230434,13,,S 446 | 445,1,3,"Johannesen-Bratthammer, Mr. Bernt",male,,0,0,65306,8.1125,,S 447 | 446,1,1,"Dodge, Master. Washington",male,4,0,2,33638,81.8583,A34,S 448 | 447,1,2,"Mellinger, Miss. Madeleine Violet",female,13,0,1,250644,19.5,,S 449 | 448,1,1,"Seward, Mr. Frederic Kimber",male,34,0,0,113794,26.55,,S 450 | 449,1,3,"Baclini, Miss. Marie Catherine",female,5,2,1,2666,19.2583,,C 451 | 450,1,1,"Peuchen, Major. Arthur Godfrey",male,52,0,0,113786,30.5,C104,S 452 | 451,0,2,"West, Mr. Edwy Arthur",male,36,1,2,C.A. 34651,27.75,,S 453 | 452,0,3,"Hagland, Mr. Ingvald Olai Olsen",male,,1,0,65303,19.9667,,S 454 | 453,0,1,"Foreman, Mr. Benjamin Laventall",male,30,0,0,113051,27.75,C111,C 455 | 454,1,1,"Goldenberg, Mr. Samuel L",male,49,1,0,17453,89.1042,C92,C 456 | 455,0,3,"Peduzzi, Mr. Joseph",male,,0,0,A/5 2817,8.05,,S 457 | 456,1,3,"Jalsevac, Mr. Ivan",male,29,0,0,349240,7.8958,,C 458 | 457,0,1,"Millet, Mr. Francis Davis",male,65,0,0,13509,26.55,E38,S 459 | 458,1,1,"Kenyon, Mrs. Frederick R (Marion)",female,,1,0,17464,51.8625,D21,S 460 | 459,1,2,"Toomey, Miss. Ellen",female,50,0,0,F.C.C. 13531,10.5,,S 461 | 460,0,3,"O'Connor, Mr. Maurice",male,,0,0,371060,7.75,,Q 462 | 461,1,1,"Anderson, Mr. Harry",male,48,0,0,19952,26.55,E12,S 463 | 462,0,3,"Morley, Mr. William",male,34,0,0,364506,8.05,,S 464 | 463,0,1,"Gee, Mr. Arthur H",male,47,0,0,111320,38.5,E63,S 465 | 464,0,2,"Milling, Mr. Jacob Christian",male,48,0,0,234360,13,,S 466 | 465,0,3,"Maisner, Mr. Simon",male,,0,0,A/S 2816,8.05,,S 467 | 466,0,3,"Goncalves, Mr. Manuel Estanslas",male,38,0,0,SOTON/O.Q. 3101306,7.05,,S 468 | 467,0,2,"Campbell, Mr. William",male,,0,0,239853,0,,S 469 | 468,0,1,"Smart, Mr. John Montgomery",male,56,0,0,113792,26.55,,S 470 | 469,0,3,"Scanlan, Mr. James",male,,0,0,36209,7.725,,Q 471 | 470,1,3,"Baclini, Miss. Helene Barbara",female,0.75,2,1,2666,19.2583,,C 472 | 471,0,3,"Keefe, Mr. Arthur",male,,0,0,323592,7.25,,S 473 | 472,0,3,"Cacic, Mr. Luka",male,38,0,0,315089,8.6625,,S 474 | 473,1,2,"West, Mrs. Edwy Arthur (Ada Mary Worth)",female,33,1,2,C.A. 34651,27.75,,S 475 | 474,1,2,"Jerwan, Mrs. Amin S (Marie Marthe Thuillard)",female,23,0,0,SC/AH Basle 541,13.7917,D,C 476 | 475,0,3,"Strandberg, Miss. Ida Sofia",female,22,0,0,7553,9.8375,,S 477 | 476,0,1,"Clifford, Mr. George Quincy",male,,0,0,110465,52,A14,S 478 | 477,0,2,"Renouf, Mr. Peter Henry",male,34,1,0,31027,21,,S 479 | 478,0,3,"Braund, Mr. Lewis Richard",male,29,1,0,3460,7.0458,,S 480 | 479,0,3,"Karlsson, Mr. Nils August",male,22,0,0,350060,7.5208,,S 481 | 480,1,3,"Hirvonen, Miss. Hildur E",female,2,0,1,3101298,12.2875,,S 482 | 481,0,3,"Goodwin, Master. Harold Victor",male,9,5,2,CA 2144,46.9,,S 483 | 482,0,2,"Frost, Mr. Anthony Wood ""Archie""",male,,0,0,239854,0,,S 484 | 483,0,3,"Rouse, Mr. Richard Henry",male,50,0,0,A/5 3594,8.05,,S 485 | 484,1,3,"Turkula, Mrs. (Hedwig)",female,63,0,0,4134,9.5875,,S 486 | 485,1,1,"Bishop, Mr. Dickinson H",male,25,1,0,11967,91.0792,B49,C 487 | 486,0,3,"Lefebre, Miss. Jeannie",female,,3,1,4133,25.4667,,S 488 | 487,1,1,"Hoyt, Mrs. Frederick Maxfield (Jane Anne Forby)",female,35,1,0,19943,90,C93,S 489 | 488,0,1,"Kent, Mr. Edward Austin",male,58,0,0,11771,29.7,B37,C 490 | 489,0,3,"Somerton, Mr. Francis William",male,30,0,0,A.5. 18509,8.05,,S 491 | 490,1,3,"Coutts, Master. Eden Leslie ""Neville""",male,9,1,1,C.A. 37671,15.9,,S 492 | 491,0,3,"Hagland, Mr. Konrad Mathias Reiersen",male,,1,0,65304,19.9667,,S 493 | 492,0,3,"Windelov, Mr. Einar",male,21,0,0,SOTON/OQ 3101317,7.25,,S 494 | 493,0,1,"Molson, Mr. Harry Markland",male,55,0,0,113787,30.5,C30,S 495 | 494,0,1,"Artagaveytia, Mr. Ramon",male,71,0,0,PC 17609,49.5042,,C 496 | 495,0,3,"Stanley, Mr. Edward Roland",male,21,0,0,A/4 45380,8.05,,S 497 | 496,0,3,"Yousseff, Mr. Gerious",male,,0,0,2627,14.4583,,C 498 | 497,1,1,"Eustis, Miss. Elizabeth Mussey",female,54,1,0,36947,78.2667,D20,C 499 | 498,0,3,"Shellard, Mr. Frederick William",male,,0,0,C.A. 6212,15.1,,S 500 | 499,0,1,"Allison, Mrs. Hudson J C (Bessie Waldo Daniels)",female,25,1,2,113781,151.55,C22 C26,S 501 | 500,0,3,"Svensson, Mr. Olof",male,24,0,0,350035,7.7958,,S 502 | 501,0,3,"Calic, Mr. Petar",male,17,0,0,315086,8.6625,,S 503 | 502,0,3,"Canavan, Miss. Mary",female,21,0,0,364846,7.75,,Q 504 | 503,0,3,"O'Sullivan, Miss. Bridget Mary",female,,0,0,330909,7.6292,,Q 505 | 504,0,3,"Laitinen, Miss. Kristina Sofia",female,37,0,0,4135,9.5875,,S 506 | 505,1,1,"Maioni, Miss. Roberta",female,16,0,0,110152,86.5,B79,S 507 | 506,0,1,"Penasco y Castellana, Mr. Victor de Satode",male,18,1,0,PC 17758,108.9,C65,C 508 | 507,1,2,"Quick, Mrs. Frederick Charles (Jane Richards)",female,33,0,2,26360,26,,S 509 | 508,1,1,"Bradley, Mr. George (""George Arthur Brayton"")",male,,0,0,111427,26.55,,S 510 | 509,0,3,"Olsen, Mr. Henry Margido",male,28,0,0,C 4001,22.525,,S 511 | 510,1,3,"Lang, Mr. Fang",male,26,0,0,1601,56.4958,,S 512 | 511,1,3,"Daly, Mr. Eugene Patrick",male,29,0,0,382651,7.75,,Q 513 | 512,0,3,"Webber, Mr. James",male,,0,0,SOTON/OQ 3101316,8.05,,S 514 | 513,1,1,"McGough, Mr. James Robert",male,36,0,0,PC 17473,26.2875,E25,S 515 | 514,1,1,"Rothschild, Mrs. Martin (Elizabeth L. Barrett)",female,54,1,0,PC 17603,59.4,,C 516 | 515,0,3,"Coleff, Mr. Satio",male,24,0,0,349209,7.4958,,S 517 | 516,0,1,"Walker, Mr. William Anderson",male,47,0,0,36967,34.0208,D46,S 518 | 517,1,2,"Lemore, Mrs. (Amelia Milley)",female,34,0,0,C.A. 34260,10.5,F33,S 519 | 518,0,3,"Ryan, Mr. Patrick",male,,0,0,371110,24.15,,Q 520 | 519,1,2,"Angle, Mrs. William A (Florence ""Mary"" Agnes Hughes)",female,36,1,0,226875,26,,S 521 | 520,0,3,"Pavlovic, Mr. Stefo",male,32,0,0,349242,7.8958,,S 522 | 521,1,1,"Perreault, Miss. Anne",female,30,0,0,12749,93.5,B73,S 523 | 522,0,3,"Vovk, Mr. Janko",male,22,0,0,349252,7.8958,,S 524 | 523,0,3,"Lahoud, Mr. Sarkis",male,,0,0,2624,7.225,,C 525 | 524,1,1,"Hippach, Mrs. Louis Albert (Ida Sophia Fischer)",female,44,0,1,111361,57.9792,B18,C 526 | 525,0,3,"Kassem, Mr. Fared",male,,0,0,2700,7.2292,,C 527 | 526,0,3,"Farrell, Mr. James",male,40.5,0,0,367232,7.75,,Q 528 | 527,1,2,"Ridsdale, Miss. Lucy",female,50,0,0,W./C. 14258,10.5,,S 529 | 528,0,1,"Farthing, Mr. John",male,,0,0,PC 17483,221.7792,C95,S 530 | 529,0,3,"Salonen, Mr. Johan Werner",male,39,0,0,3101296,7.925,,S 531 | 530,0,2,"Hocking, Mr. Richard George",male,23,2,1,29104,11.5,,S 532 | 531,1,2,"Quick, Miss. Phyllis May",female,2,1,1,26360,26,,S 533 | 532,0,3,"Toufik, Mr. Nakli",male,,0,0,2641,7.2292,,C 534 | 533,0,3,"Elias, Mr. Joseph Jr",male,17,1,1,2690,7.2292,,C 535 | 534,1,3,"Peter, Mrs. Catherine (Catherine Rizk)",female,,0,2,2668,22.3583,,C 536 | 535,0,3,"Cacic, Miss. Marija",female,30,0,0,315084,8.6625,,S 537 | 536,1,2,"Hart, Miss. Eva Miriam",female,7,0,2,F.C.C. 13529,26.25,,S 538 | 537,0,1,"Butt, Major. Archibald Willingham",male,45,0,0,113050,26.55,B38,S 539 | 538,1,1,"LeRoy, Miss. Bertha",female,30,0,0,PC 17761,106.425,,C 540 | 539,0,3,"Risien, Mr. Samuel Beard",male,,0,0,364498,14.5,,S 541 | 540,1,1,"Frolicher, Miss. Hedwig Margaritha",female,22,0,2,13568,49.5,B39,C 542 | 541,1,1,"Crosby, Miss. Harriet R",female,36,0,2,WE/P 5735,71,B22,S 543 | 542,0,3,"Andersson, Miss. Ingeborg Constanzia",female,9,4,2,347082,31.275,,S 544 | 543,0,3,"Andersson, Miss. Sigrid Elisabeth",female,11,4,2,347082,31.275,,S 545 | 544,1,2,"Beane, Mr. Edward",male,32,1,0,2908,26,,S 546 | 545,0,1,"Douglas, Mr. Walter Donald",male,50,1,0,PC 17761,106.425,C86,C 547 | 546,0,1,"Nicholson, Mr. Arthur Ernest",male,64,0,0,693,26,,S 548 | 547,1,2,"Beane, Mrs. Edward (Ethel Clarke)",female,19,1,0,2908,26,,S 549 | 548,1,2,"Padro y Manent, Mr. Julian",male,,0,0,SC/PARIS 2146,13.8625,,C 550 | 549,0,3,"Goldsmith, Mr. Frank John",male,33,1,1,363291,20.525,,S 551 | 550,1,2,"Davies, Master. John Morgan Jr",male,8,1,1,C.A. 33112,36.75,,S 552 | 551,1,1,"Thayer, Mr. John Borland Jr",male,17,0,2,17421,110.8833,C70,C 553 | 552,0,2,"Sharp, Mr. Percival James R",male,27,0,0,244358,26,,S 554 | 553,0,3,"O'Brien, Mr. Timothy",male,,0,0,330979,7.8292,,Q 555 | 554,1,3,"Leeni, Mr. Fahim (""Philip Zenni"")",male,22,0,0,2620,7.225,,C 556 | 555,1,3,"Ohman, Miss. Velin",female,22,0,0,347085,7.775,,S 557 | 556,0,1,"Wright, Mr. George",male,62,0,0,113807,26.55,,S 558 | 557,1,1,"Duff Gordon, Lady. (Lucille Christiana Sutherland) (""Mrs Morgan"")",female,48,1,0,11755,39.6,A16,C 559 | 558,0,1,"Robbins, Mr. Victor",male,,0,0,PC 17757,227.525,,C 560 | 559,1,1,"Taussig, Mrs. Emil (Tillie Mandelbaum)",female,39,1,1,110413,79.65,E67,S 561 | 560,1,3,"de Messemaeker, Mrs. Guillaume Joseph (Emma)",female,36,1,0,345572,17.4,,S 562 | 561,0,3,"Morrow, Mr. Thomas Rowan",male,,0,0,372622,7.75,,Q 563 | 562,0,3,"Sivic, Mr. Husein",male,40,0,0,349251,7.8958,,S 564 | 563,0,2,"Norman, Mr. Robert Douglas",male,28,0,0,218629,13.5,,S 565 | 564,0,3,"Simmons, Mr. John",male,,0,0,SOTON/OQ 392082,8.05,,S 566 | 565,0,3,"Meanwell, Miss. (Marion Ogden)",female,,0,0,SOTON/O.Q. 392087,8.05,,S 567 | 566,0,3,"Davies, Mr. Alfred J",male,24,2,0,A/4 48871,24.15,,S 568 | 567,0,3,"Stoytcheff, Mr. Ilia",male,19,0,0,349205,7.8958,,S 569 | 568,0,3,"Palsson, Mrs. Nils (Alma Cornelia Berglund)",female,29,0,4,349909,21.075,,S 570 | 569,0,3,"Doharr, Mr. Tannous",male,,0,0,2686,7.2292,,C 571 | 570,1,3,"Jonsson, Mr. Carl",male,32,0,0,350417,7.8542,,S 572 | 571,1,2,"Harris, Mr. George",male,62,0,0,S.W./PP 752,10.5,,S 573 | 572,1,1,"Appleton, Mrs. Edward Dale (Charlotte Lamson)",female,53,2,0,11769,51.4792,C101,S 574 | 573,1,1,"Flynn, Mr. John Irwin (""Irving"")",male,36,0,0,PC 17474,26.3875,E25,S 575 | 574,1,3,"Kelly, Miss. Mary",female,,0,0,14312,7.75,,Q 576 | 575,0,3,"Rush, Mr. Alfred George John",male,16,0,0,A/4. 20589,8.05,,S 577 | 576,0,3,"Patchett, Mr. George",male,19,0,0,358585,14.5,,S 578 | 577,1,2,"Garside, Miss. Ethel",female,34,0,0,243880,13,,S 579 | 578,1,1,"Silvey, Mrs. William Baird (Alice Munger)",female,39,1,0,13507,55.9,E44,S 580 | 579,0,3,"Caram, Mrs. Joseph (Maria Elias)",female,,1,0,2689,14.4583,,C 581 | 580,1,3,"Jussila, Mr. Eiriik",male,32,0,0,STON/O 2. 3101286,7.925,,S 582 | 581,1,2,"Christy, Miss. Julie Rachel",female,25,1,1,237789,30,,S 583 | 582,1,1,"Thayer, Mrs. John Borland (Marian Longstreth Morris)",female,39,1,1,17421,110.8833,C68,C 584 | 583,0,2,"Downton, Mr. William James",male,54,0,0,28403,26,,S 585 | 584,0,1,"Ross, Mr. John Hugo",male,36,0,0,13049,40.125,A10,C 586 | 585,0,3,"Paulner, Mr. Uscher",male,,0,0,3411,8.7125,,C 587 | 586,1,1,"Taussig, Miss. Ruth",female,18,0,2,110413,79.65,E68,S 588 | 587,0,2,"Jarvis, Mr. John Denzil",male,47,0,0,237565,15,,S 589 | 588,1,1,"Frolicher-Stehli, Mr. Maxmillian",male,60,1,1,13567,79.2,B41,C 590 | 589,0,3,"Gilinski, Mr. Eliezer",male,22,0,0,14973,8.05,,S 591 | 590,0,3,"Murdlin, Mr. Joseph",male,,0,0,A./5. 3235,8.05,,S 592 | 591,0,3,"Rintamaki, Mr. Matti",male,35,0,0,STON/O 2. 3101273,7.125,,S 593 | 592,1,1,"Stephenson, Mrs. Walter Bertram (Martha Eustis)",female,52,1,0,36947,78.2667,D20,C 594 | 593,0,3,"Elsbury, Mr. William James",male,47,0,0,A/5 3902,7.25,,S 595 | 594,0,3,"Bourke, Miss. Mary",female,,0,2,364848,7.75,,Q 596 | 595,0,2,"Chapman, Mr. John Henry",male,37,1,0,SC/AH 29037,26,,S 597 | 596,0,3,"Van Impe, Mr. Jean Baptiste",male,36,1,1,345773,24.15,,S 598 | 597,1,2,"Leitch, Miss. Jessie Wills",female,,0,0,248727,33,,S 599 | 598,0,3,"Johnson, Mr. Alfred",male,49,0,0,LINE,0,,S 600 | 599,0,3,"Boulos, Mr. Hanna",male,,0,0,2664,7.225,,C 601 | 600,1,1,"Duff Gordon, Sir. Cosmo Edmund (""Mr Morgan"")",male,49,1,0,PC 17485,56.9292,A20,C 602 | 601,1,2,"Jacobsohn, Mrs. Sidney Samuel (Amy Frances Christy)",female,24,2,1,243847,27,,S 603 | 602,0,3,"Slabenoff, Mr. Petco",male,,0,0,349214,7.8958,,S 604 | 603,0,1,"Harrington, Mr. Charles H",male,,0,0,113796,42.4,,S 605 | 604,0,3,"Torber, Mr. Ernst William",male,44,0,0,364511,8.05,,S 606 | 605,1,1,"Homer, Mr. Harry (""Mr E Haven"")",male,35,0,0,111426,26.55,,C 607 | 606,0,3,"Lindell, Mr. Edvard Bengtsson",male,36,1,0,349910,15.55,,S 608 | 607,0,3,"Karaic, Mr. Milan",male,30,0,0,349246,7.8958,,S 609 | 608,1,1,"Daniel, Mr. Robert Williams",male,27,0,0,113804,30.5,,S 610 | 609,1,2,"Laroche, Mrs. Joseph (Juliette Marie Louise Lafargue)",female,22,1,2,SC/Paris 2123,41.5792,,C 611 | 610,1,1,"Shutes, Miss. Elizabeth W",female,40,0,0,PC 17582,153.4625,C125,S 612 | 611,0,3,"Andersson, Mrs. Anders Johan (Alfrida Konstantia Brogren)",female,39,1,5,347082,31.275,,S 613 | 612,0,3,"Jardin, Mr. Jose Neto",male,,0,0,SOTON/O.Q. 3101305,7.05,,S 614 | 613,1,3,"Murphy, Miss. Margaret Jane",female,,1,0,367230,15.5,,Q 615 | 614,0,3,"Horgan, Mr. John",male,,0,0,370377,7.75,,Q 616 | 615,0,3,"Brocklebank, Mr. William Alfred",male,35,0,0,364512,8.05,,S 617 | 616,1,2,"Herman, Miss. Alice",female,24,1,2,220845,65,,S 618 | 617,0,3,"Danbom, Mr. Ernst Gilbert",male,34,1,1,347080,14.4,,S 619 | 618,0,3,"Lobb, Mrs. William Arthur (Cordelia K Stanlick)",female,26,1,0,A/5. 3336,16.1,,S 620 | 619,1,2,"Becker, Miss. Marion Louise",female,4,2,1,230136,39,F4,S 621 | 620,0,2,"Gavey, Mr. Lawrence",male,26,0,0,31028,10.5,,S 622 | 621,0,3,"Yasbeck, Mr. Antoni",male,27,1,0,2659,14.4542,,C 623 | 622,1,1,"Kimball, Mr. Edwin Nelson Jr",male,42,1,0,11753,52.5542,D19,S 624 | 623,1,3,"Nakid, Mr. Sahid",male,20,1,1,2653,15.7417,,C 625 | 624,0,3,"Hansen, Mr. Henry Damsgaard",male,21,0,0,350029,7.8542,,S 626 | 625,0,3,"Bowen, Mr. David John ""Dai""",male,21,0,0,54636,16.1,,S 627 | 626,0,1,"Sutton, Mr. Frederick",male,61,0,0,36963,32.3208,D50,S 628 | 627,0,2,"Kirkland, Rev. Charles Leonard",male,57,0,0,219533,12.35,,Q 629 | 628,1,1,"Longley, Miss. Gretchen Fiske",female,21,0,0,13502,77.9583,D9,S 630 | 629,0,3,"Bostandyeff, Mr. Guentcho",male,26,0,0,349224,7.8958,,S 631 | 630,0,3,"O'Connell, Mr. Patrick D",male,,0,0,334912,7.7333,,Q 632 | 631,1,1,"Barkworth, Mr. Algernon Henry Wilson",male,80,0,0,27042,30,A23,S 633 | 632,0,3,"Lundahl, Mr. Johan Svensson",male,51,0,0,347743,7.0542,,S 634 | 633,1,1,"Stahelin-Maeglin, Dr. Max",male,32,0,0,13214,30.5,B50,C 635 | 634,0,1,"Parr, Mr. William Henry Marsh",male,,0,0,112052,0,,S 636 | 635,0,3,"Skoog, Miss. Mabel",female,9,3,2,347088,27.9,,S 637 | 636,1,2,"Davis, Miss. Mary",female,28,0,0,237668,13,,S 638 | 637,0,3,"Leinonen, Mr. Antti Gustaf",male,32,0,0,STON/O 2. 3101292,7.925,,S 639 | 638,0,2,"Collyer, Mr. Harvey",male,31,1,1,C.A. 31921,26.25,,S 640 | 639,0,3,"Panula, Mrs. Juha (Maria Emilia Ojala)",female,41,0,5,3101295,39.6875,,S 641 | 640,0,3,"Thorneycroft, Mr. Percival",male,,1,0,376564,16.1,,S 642 | 641,0,3,"Jensen, Mr. Hans Peder",male,20,0,0,350050,7.8542,,S 643 | 642,1,1,"Sagesser, Mlle. Emma",female,24,0,0,PC 17477,69.3,B35,C 644 | 643,0,3,"Skoog, Miss. Margit Elizabeth",female,2,3,2,347088,27.9,,S 645 | 644,1,3,"Foo, Mr. Choong",male,,0,0,1601,56.4958,,S 646 | 645,1,3,"Baclini, Miss. Eugenie",female,0.75,2,1,2666,19.2583,,C 647 | 646,1,1,"Harper, Mr. Henry Sleeper",male,48,1,0,PC 17572,76.7292,D33,C 648 | 647,0,3,"Cor, Mr. Liudevit",male,19,0,0,349231,7.8958,,S 649 | 648,1,1,"Simonius-Blumer, Col. Oberst Alfons",male,56,0,0,13213,35.5,A26,C 650 | 649,0,3,"Willey, Mr. Edward",male,,0,0,S.O./P.P. 751,7.55,,S 651 | 650,1,3,"Stanley, Miss. Amy Zillah Elsie",female,23,0,0,CA. 2314,7.55,,S 652 | 651,0,3,"Mitkoff, Mr. Mito",male,,0,0,349221,7.8958,,S 653 | 652,1,2,"Doling, Miss. Elsie",female,18,0,1,231919,23,,S 654 | 653,0,3,"Kalvik, Mr. Johannes Halvorsen",male,21,0,0,8475,8.4333,,S 655 | 654,1,3,"O'Leary, Miss. Hanora ""Norah""",female,,0,0,330919,7.8292,,Q 656 | 655,0,3,"Hegarty, Miss. Hanora ""Nora""",female,18,0,0,365226,6.75,,Q 657 | 656,0,2,"Hickman, Mr. Leonard Mark",male,24,2,0,S.O.C. 14879,73.5,,S 658 | 657,0,3,"Radeff, Mr. Alexander",male,,0,0,349223,7.8958,,S 659 | 658,0,3,"Bourke, Mrs. John (Catherine)",female,32,1,1,364849,15.5,,Q 660 | 659,0,2,"Eitemiller, Mr. George Floyd",male,23,0,0,29751,13,,S 661 | 660,0,1,"Newell, Mr. Arthur Webster",male,58,0,2,35273,113.275,D48,C 662 | 661,1,1,"Frauenthal, Dr. Henry William",male,50,2,0,PC 17611,133.65,,S 663 | 662,0,3,"Badt, Mr. Mohamed",male,40,0,0,2623,7.225,,C 664 | 663,0,1,"Colley, Mr. Edward Pomeroy",male,47,0,0,5727,25.5875,E58,S 665 | 664,0,3,"Coleff, Mr. Peju",male,36,0,0,349210,7.4958,,S 666 | 665,1,3,"Lindqvist, Mr. Eino William",male,20,1,0,STON/O 2. 3101285,7.925,,S 667 | 666,0,2,"Hickman, Mr. Lewis",male,32,2,0,S.O.C. 14879,73.5,,S 668 | 667,0,2,"Butler, Mr. Reginald Fenton",male,25,0,0,234686,13,,S 669 | 668,0,3,"Rommetvedt, Mr. Knud Paust",male,,0,0,312993,7.775,,S 670 | 669,0,3,"Cook, Mr. Jacob",male,43,0,0,A/5 3536,8.05,,S 671 | 670,1,1,"Taylor, Mrs. Elmer Zebley (Juliet Cummins Wright)",female,,1,0,19996,52,C126,S 672 | 671,1,2,"Brown, Mrs. Thomas William Solomon (Elizabeth Catherine Ford)",female,40,1,1,29750,39,,S 673 | 672,0,1,"Davidson, Mr. Thornton",male,31,1,0,F.C. 12750,52,B71,S 674 | 673,0,2,"Mitchell, Mr. Henry Michael",male,70,0,0,C.A. 24580,10.5,,S 675 | 674,1,2,"Wilhelms, Mr. Charles",male,31,0,0,244270,13,,S 676 | 675,0,2,"Watson, Mr. Ennis Hastings",male,,0,0,239856,0,,S 677 | 676,0,3,"Edvardsson, Mr. Gustaf Hjalmar",male,18,0,0,349912,7.775,,S 678 | 677,0,3,"Sawyer, Mr. Frederick Charles",male,24.5,0,0,342826,8.05,,S 679 | 678,1,3,"Turja, Miss. Anna Sofia",female,18,0,0,4138,9.8417,,S 680 | 679,0,3,"Goodwin, Mrs. Frederick (Augusta Tyler)",female,43,1,6,CA 2144,46.9,,S 681 | 680,1,1,"Cardeza, Mr. Thomas Drake Martinez",male,36,0,1,PC 17755,512.3292,B51 B53 B55,C 682 | 681,0,3,"Peters, Miss. Katie",female,,0,0,330935,8.1375,,Q 683 | 682,1,1,"Hassab, Mr. Hammad",male,27,0,0,PC 17572,76.7292,D49,C 684 | 683,0,3,"Olsvigen, Mr. Thor Anderson",male,20,0,0,6563,9.225,,S 685 | 684,0,3,"Goodwin, Mr. Charles Edward",male,14,5,2,CA 2144,46.9,,S 686 | 685,0,2,"Brown, Mr. Thomas William Solomon",male,60,1,1,29750,39,,S 687 | 686,0,2,"Laroche, Mr. Joseph Philippe Lemercier",male,25,1,2,SC/Paris 2123,41.5792,,C 688 | 687,0,3,"Panula, Mr. Jaako Arnold",male,14,4,1,3101295,39.6875,,S 689 | 688,0,3,"Dakic, Mr. Branko",male,19,0,0,349228,10.1708,,S 690 | 689,0,3,"Fischer, Mr. Eberhard Thelander",male,18,0,0,350036,7.7958,,S 691 | 690,1,1,"Madill, Miss. Georgette Alexandra",female,15,0,1,24160,211.3375,B5,S 692 | 691,1,1,"Dick, Mr. Albert Adrian",male,31,1,0,17474,57,B20,S 693 | 692,1,3,"Karun, Miss. Manca",female,4,0,1,349256,13.4167,,C 694 | 693,1,3,"Lam, Mr. Ali",male,,0,0,1601,56.4958,,S 695 | 694,0,3,"Saad, Mr. Khalil",male,25,0,0,2672,7.225,,C 696 | 695,0,1,"Weir, Col. John",male,60,0,0,113800,26.55,,S 697 | 696,0,2,"Chapman, Mr. Charles Henry",male,52,0,0,248731,13.5,,S 698 | 697,0,3,"Kelly, Mr. James",male,44,0,0,363592,8.05,,S 699 | 698,1,3,"Mullens, Miss. Katherine ""Katie""",female,,0,0,35852,7.7333,,Q 700 | 699,0,1,"Thayer, Mr. John Borland",male,49,1,1,17421,110.8833,C68,C 701 | 700,0,3,"Humblen, Mr. Adolf Mathias Nicolai Olsen",male,42,0,0,348121,7.65,F G63,S 702 | 701,1,1,"Astor, Mrs. John Jacob (Madeleine Talmadge Force)",female,18,1,0,PC 17757,227.525,C62 C64,C 703 | 702,1,1,"Silverthorne, Mr. Spencer Victor",male,35,0,0,PC 17475,26.2875,E24,S 704 | 703,0,3,"Barbara, Miss. Saiide",female,18,0,1,2691,14.4542,,C 705 | 704,0,3,"Gallagher, Mr. Martin",male,25,0,0,36864,7.7417,,Q 706 | 705,0,3,"Hansen, Mr. Henrik Juul",male,26,1,0,350025,7.8542,,S 707 | 706,0,2,"Morley, Mr. Henry Samuel (""Mr Henry Marshall"")",male,39,0,0,250655,26,,S 708 | 707,1,2,"Kelly, Mrs. Florence ""Fannie""",female,45,0,0,223596,13.5,,S 709 | 708,1,1,"Calderhead, Mr. Edward Pennington",male,42,0,0,PC 17476,26.2875,E24,S 710 | 709,1,1,"Cleaver, Miss. Alice",female,22,0,0,113781,151.55,,S 711 | 710,1,3,"Moubarek, Master. Halim Gonios (""William George"")",male,,1,1,2661,15.2458,,C 712 | 711,1,1,"Mayne, Mlle. Berthe Antonine (""Mrs de Villiers"")",female,24,0,0,PC 17482,49.5042,C90,C 713 | 712,0,1,"Klaber, Mr. Herman",male,,0,0,113028,26.55,C124,S 714 | 713,1,1,"Taylor, Mr. Elmer Zebley",male,48,1,0,19996,52,C126,S 715 | 714,0,3,"Larsson, Mr. August Viktor",male,29,0,0,7545,9.4833,,S 716 | 715,0,2,"Greenberg, Mr. Samuel",male,52,0,0,250647,13,,S 717 | 716,0,3,"Soholt, Mr. Peter Andreas Lauritz Andersen",male,19,0,0,348124,7.65,F G73,S 718 | 717,1,1,"Endres, Miss. Caroline Louise",female,38,0,0,PC 17757,227.525,C45,C 719 | 718,1,2,"Troutt, Miss. Edwina Celia ""Winnie""",female,27,0,0,34218,10.5,E101,S 720 | 719,0,3,"McEvoy, Mr. Michael",male,,0,0,36568,15.5,,Q 721 | 720,0,3,"Johnson, Mr. Malkolm Joackim",male,33,0,0,347062,7.775,,S 722 | 721,1,2,"Harper, Miss. Annie Jessie ""Nina""",female,6,0,1,248727,33,,S 723 | 722,0,3,"Jensen, Mr. Svend Lauritz",male,17,1,0,350048,7.0542,,S 724 | 723,0,2,"Gillespie, Mr. William Henry",male,34,0,0,12233,13,,S 725 | 724,0,2,"Hodges, Mr. Henry Price",male,50,0,0,250643,13,,S 726 | 725,1,1,"Chambers, Mr. Norman Campbell",male,27,1,0,113806,53.1,E8,S 727 | 726,0,3,"Oreskovic, Mr. Luka",male,20,0,0,315094,8.6625,,S 728 | 727,1,2,"Renouf, Mrs. Peter Henry (Lillian Jefferys)",female,30,3,0,31027,21,,S 729 | 728,1,3,"Mannion, Miss. Margareth",female,,0,0,36866,7.7375,,Q 730 | 729,0,2,"Bryhl, Mr. Kurt Arnold Gottfrid",male,25,1,0,236853,26,,S 731 | 730,0,3,"Ilmakangas, Miss. Pieta Sofia",female,25,1,0,STON/O2. 3101271,7.925,,S 732 | 731,1,1,"Allen, Miss. Elisabeth Walton",female,29,0,0,24160,211.3375,B5,S 733 | 732,0,3,"Hassan, Mr. Houssein G N",male,11,0,0,2699,18.7875,,C 734 | 733,0,2,"Knight, Mr. Robert J",male,,0,0,239855,0,,S 735 | 734,0,2,"Berriman, Mr. William John",male,23,0,0,28425,13,,S 736 | 735,0,2,"Troupiansky, Mr. Moses Aaron",male,23,0,0,233639,13,,S 737 | 736,0,3,"Williams, Mr. Leslie",male,28.5,0,0,54636,16.1,,S 738 | 737,0,3,"Ford, Mrs. Edward (Margaret Ann Watson)",female,48,1,3,W./C. 6608,34.375,,S 739 | 738,1,1,"Lesurer, Mr. Gustave J",male,35,0,0,PC 17755,512.3292,B101,C 740 | 739,0,3,"Ivanoff, Mr. Kanio",male,,0,0,349201,7.8958,,S 741 | 740,0,3,"Nankoff, Mr. Minko",male,,0,0,349218,7.8958,,S 742 | 741,1,1,"Hawksford, Mr. Walter James",male,,0,0,16988,30,D45,S 743 | 742,0,1,"Cavendish, Mr. Tyrell William",male,36,1,0,19877,78.85,C46,S 744 | 743,1,1,"Ryerson, Miss. Susan Parker ""Suzette""",female,21,2,2,PC 17608,262.375,B57 B59 B63 B66,C 745 | 744,0,3,"McNamee, Mr. Neal",male,24,1,0,376566,16.1,,S 746 | 745,1,3,"Stranden, Mr. Juho",male,31,0,0,STON/O 2. 3101288,7.925,,S 747 | 746,0,1,"Crosby, Capt. Edward Gifford",male,70,1,1,WE/P 5735,71,B22,S 748 | 747,0,3,"Abbott, Mr. Rossmore Edward",male,16,1,1,C.A. 2673,20.25,,S 749 | 748,1,2,"Sinkkonen, Miss. Anna",female,30,0,0,250648,13,,S 750 | 749,0,1,"Marvin, Mr. Daniel Warner",male,19,1,0,113773,53.1,D30,S 751 | 750,0,3,"Connaghton, Mr. Michael",male,31,0,0,335097,7.75,,Q 752 | 751,1,2,"Wells, Miss. Joan",female,4,1,1,29103,23,,S 753 | 752,1,3,"Moor, Master. Meier",male,6,0,1,392096,12.475,E121,S 754 | 753,0,3,"Vande Velde, Mr. Johannes Joseph",male,33,0,0,345780,9.5,,S 755 | 754,0,3,"Jonkoff, Mr. Lalio",male,23,0,0,349204,7.8958,,S 756 | 755,1,2,"Herman, Mrs. Samuel (Jane Laver)",female,48,1,2,220845,65,,S 757 | 756,1,2,"Hamalainen, Master. Viljo",male,0.67,1,1,250649,14.5,,S 758 | 757,0,3,"Carlsson, Mr. August Sigfrid",male,28,0,0,350042,7.7958,,S 759 | 758,0,2,"Bailey, Mr. Percy Andrew",male,18,0,0,29108,11.5,,S 760 | 759,0,3,"Theobald, Mr. Thomas Leonard",male,34,0,0,363294,8.05,,S 761 | 760,1,1,"Rothes, the Countess. of (Lucy Noel Martha Dyer-Edwards)",female,33,0,0,110152,86.5,B77,S 762 | 761,0,3,"Garfirth, Mr. John",male,,0,0,358585,14.5,,S 763 | 762,0,3,"Nirva, Mr. Iisakki Antino Aijo",male,41,0,0,SOTON/O2 3101272,7.125,,S 764 | 763,1,3,"Barah, Mr. Hanna Assi",male,20,0,0,2663,7.2292,,C 765 | 764,1,1,"Carter, Mrs. William Ernest (Lucile Polk)",female,36,1,2,113760,120,B96 B98,S 766 | 765,0,3,"Eklund, Mr. Hans Linus",male,16,0,0,347074,7.775,,S 767 | 766,1,1,"Hogeboom, Mrs. John C (Anna Andrews)",female,51,1,0,13502,77.9583,D11,S 768 | 767,0,1,"Brewe, Dr. Arthur Jackson",male,,0,0,112379,39.6,,C 769 | 768,0,3,"Mangan, Miss. Mary",female,30.5,0,0,364850,7.75,,Q 770 | 769,0,3,"Moran, Mr. Daniel J",male,,1,0,371110,24.15,,Q 771 | 770,0,3,"Gronnestad, Mr. Daniel Danielsen",male,32,0,0,8471,8.3625,,S 772 | 771,0,3,"Lievens, Mr. Rene Aime",male,24,0,0,345781,9.5,,S 773 | 772,0,3,"Jensen, Mr. Niels Peder",male,48,0,0,350047,7.8542,,S 774 | 773,0,2,"Mack, Mrs. (Mary)",female,57,0,0,S.O./P.P. 3,10.5,E77,S 775 | 774,0,3,"Elias, Mr. Dibo",male,,0,0,2674,7.225,,C 776 | 775,1,2,"Hocking, Mrs. Elizabeth (Eliza Needs)",female,54,1,3,29105,23,,S 777 | 776,0,3,"Myhrman, Mr. Pehr Fabian Oliver Malkolm",male,18,0,0,347078,7.75,,S 778 | 777,0,3,"Tobin, Mr. Roger",male,,0,0,383121,7.75,F38,Q 779 | 778,1,3,"Emanuel, Miss. Virginia Ethel",female,5,0,0,364516,12.475,,S 780 | 779,0,3,"Kilgannon, Mr. Thomas J",male,,0,0,36865,7.7375,,Q 781 | 780,1,1,"Robert, Mrs. Edward Scott (Elisabeth Walton McMillan)",female,43,0,1,24160,211.3375,B3,S 782 | 781,1,3,"Ayoub, Miss. Banoura",female,13,0,0,2687,7.2292,,C 783 | 782,1,1,"Dick, Mrs. Albert Adrian (Vera Gillespie)",female,17,1,0,17474,57,B20,S 784 | 783,0,1,"Long, Mr. Milton Clyde",male,29,0,0,113501,30,D6,S 785 | 784,0,3,"Johnston, Mr. Andrew G",male,,1,2,W./C. 6607,23.45,,S 786 | 785,0,3,"Ali, Mr. William",male,25,0,0,SOTON/O.Q. 3101312,7.05,,S 787 | 786,0,3,"Harmer, Mr. Abraham (David Lishin)",male,25,0,0,374887,7.25,,S 788 | 787,1,3,"Sjoblom, Miss. Anna Sofia",female,18,0,0,3101265,7.4958,,S 789 | 788,0,3,"Rice, Master. George Hugh",male,8,4,1,382652,29.125,,Q 790 | 789,1,3,"Dean, Master. Bertram Vere",male,1,1,2,C.A. 2315,20.575,,S 791 | 790,0,1,"Guggenheim, Mr. Benjamin",male,46,0,0,PC 17593,79.2,B82 B84,C 792 | 791,0,3,"Keane, Mr. Andrew ""Andy""",male,,0,0,12460,7.75,,Q 793 | 792,0,2,"Gaskell, Mr. Alfred",male,16,0,0,239865,26,,S 794 | 793,0,3,"Sage, Miss. Stella Anna",female,,8,2,CA. 2343,69.55,,S 795 | 794,0,1,"Hoyt, Mr. William Fisher",male,,0,0,PC 17600,30.6958,,C 796 | 795,0,3,"Dantcheff, Mr. Ristiu",male,25,0,0,349203,7.8958,,S 797 | 796,0,2,"Otter, Mr. Richard",male,39,0,0,28213,13,,S 798 | 797,1,1,"Leader, Dr. Alice (Farnham)",female,49,0,0,17465,25.9292,D17,S 799 | 798,1,3,"Osman, Mrs. Mara",female,31,0,0,349244,8.6833,,S 800 | 799,0,3,"Ibrahim Shawah, Mr. Yousseff",male,30,0,0,2685,7.2292,,C 801 | 800,0,3,"Van Impe, Mrs. Jean Baptiste (Rosalie Paula Govaert)",female,30,1,1,345773,24.15,,S 802 | 801,0,2,"Ponesell, Mr. Martin",male,34,0,0,250647,13,,S 803 | 802,1,2,"Collyer, Mrs. Harvey (Charlotte Annie Tate)",female,31,1,1,C.A. 31921,26.25,,S 804 | 803,1,1,"Carter, Master. William Thornton II",male,11,1,2,113760,120,B96 B98,S 805 | 804,1,3,"Thomas, Master. Assad Alexander",male,0.42,0,1,2625,8.5167,,C 806 | 805,1,3,"Hedman, Mr. Oskar Arvid",male,27,0,0,347089,6.975,,S 807 | 806,0,3,"Johansson, Mr. Karl Johan",male,31,0,0,347063,7.775,,S 808 | 807,0,1,"Andrews, Mr. Thomas Jr",male,39,0,0,112050,0,A36,S 809 | 808,0,3,"Pettersson, Miss. Ellen Natalia",female,18,0,0,347087,7.775,,S 810 | 809,0,2,"Meyer, Mr. August",male,39,0,0,248723,13,,S 811 | 810,1,1,"Chambers, Mrs. Norman Campbell (Bertha Griggs)",female,33,1,0,113806,53.1,E8,S 812 | 811,0,3,"Alexander, Mr. William",male,26,0,0,3474,7.8875,,S 813 | 812,0,3,"Lester, Mr. James",male,39,0,0,A/4 48871,24.15,,S 814 | 813,0,2,"Slemen, Mr. Richard James",male,35,0,0,28206,10.5,,S 815 | 814,0,3,"Andersson, Miss. Ebba Iris Alfrida",female,6,4,2,347082,31.275,,S 816 | 815,0,3,"Tomlin, Mr. Ernest Portage",male,30.5,0,0,364499,8.05,,S 817 | 816,0,1,"Fry, Mr. Richard",male,,0,0,112058,0,B102,S 818 | 817,0,3,"Heininen, Miss. Wendla Maria",female,23,0,0,STON/O2. 3101290,7.925,,S 819 | 818,0,2,"Mallet, Mr. Albert",male,31,1,1,S.C./PARIS 2079,37.0042,,C 820 | 819,0,3,"Holm, Mr. John Fredrik Alexander",male,43,0,0,C 7075,6.45,,S 821 | 820,0,3,"Skoog, Master. Karl Thorsten",male,10,3,2,347088,27.9,,S 822 | 821,1,1,"Hays, Mrs. Charles Melville (Clara Jennings Gregg)",female,52,1,1,12749,93.5,B69,S 823 | 822,1,3,"Lulic, Mr. Nikola",male,27,0,0,315098,8.6625,,S 824 | 823,0,1,"Reuchlin, Jonkheer. John George",male,38,0,0,19972,0,,S 825 | 824,1,3,"Moor, Mrs. (Beila)",female,27,0,1,392096,12.475,E121,S 826 | 825,0,3,"Panula, Master. Urho Abraham",male,2,4,1,3101295,39.6875,,S 827 | 826,0,3,"Flynn, Mr. John",male,,0,0,368323,6.95,,Q 828 | 827,0,3,"Lam, Mr. Len",male,,0,0,1601,56.4958,,S 829 | 828,1,2,"Mallet, Master. Andre",male,1,0,2,S.C./PARIS 2079,37.0042,,C 830 | 829,1,3,"McCormack, Mr. Thomas Joseph",male,,0,0,367228,7.75,,Q 831 | 830,1,1,"Stone, Mrs. George Nelson (Martha Evelyn)",female,62,0,0,113572,80,B28, 832 | 831,1,3,"Yasbeck, Mrs. Antoni (Selini Alexander)",female,15,1,0,2659,14.4542,,C 833 | 832,1,2,"Richards, Master. George Sibley",male,0.83,1,1,29106,18.75,,S 834 | 833,0,3,"Saad, Mr. Amin",male,,0,0,2671,7.2292,,C 835 | 834,0,3,"Augustsson, Mr. Albert",male,23,0,0,347468,7.8542,,S 836 | 835,0,3,"Allum, Mr. Owen George",male,18,0,0,2223,8.3,,S 837 | 836,1,1,"Compton, Miss. Sara Rebecca",female,39,1,1,PC 17756,83.1583,E49,C 838 | 837,0,3,"Pasic, Mr. Jakob",male,21,0,0,315097,8.6625,,S 839 | 838,0,3,"Sirota, Mr. Maurice",male,,0,0,392092,8.05,,S 840 | 839,1,3,"Chip, Mr. Chang",male,32,0,0,1601,56.4958,,S 841 | 840,1,1,"Marechal, Mr. Pierre",male,,0,0,11774,29.7,C47,C 842 | 841,0,3,"Alhomaki, Mr. Ilmari Rudolf",male,20,0,0,SOTON/O2 3101287,7.925,,S 843 | 842,0,2,"Mudd, Mr. Thomas Charles",male,16,0,0,S.O./P.P. 3,10.5,,S 844 | 843,1,1,"Serepeca, Miss. Augusta",female,30,0,0,113798,31,,C 845 | 844,0,3,"Lemberopolous, Mr. Peter L",male,34.5,0,0,2683,6.4375,,C 846 | 845,0,3,"Culumovic, Mr. Jeso",male,17,0,0,315090,8.6625,,S 847 | 846,0,3,"Abbing, Mr. Anthony",male,42,0,0,C.A. 5547,7.55,,S 848 | 847,0,3,"Sage, Mr. Douglas Bullen",male,,8,2,CA. 2343,69.55,,S 849 | 848,0,3,"Markoff, Mr. Marin",male,35,0,0,349213,7.8958,,C 850 | 849,0,2,"Harper, Rev. John",male,28,0,1,248727,33,,S 851 | 850,1,1,"Goldenberg, Mrs. Samuel L (Edwiga Grabowska)",female,,1,0,17453,89.1042,C92,C 852 | 851,0,3,"Andersson, Master. Sigvard Harald Elias",male,4,4,2,347082,31.275,,S 853 | 852,0,3,"Svensson, Mr. Johan",male,74,0,0,347060,7.775,,S 854 | 853,0,3,"Boulos, Miss. Nourelain",female,9,1,1,2678,15.2458,,C 855 | 854,1,1,"Lines, Miss. Mary Conover",female,16,0,1,PC 17592,39.4,D28,S 856 | 855,0,2,"Carter, Mrs. Ernest Courtenay (Lilian Hughes)",female,44,1,0,244252,26,,S 857 | 856,1,3,"Aks, Mrs. Sam (Leah Rosen)",female,18,0,1,392091,9.35,,S 858 | 857,1,1,"Wick, Mrs. George Dennick (Mary Hitchcock)",female,45,1,1,36928,164.8667,,S 859 | 858,1,1,"Daly, Mr. Peter Denis ",male,51,0,0,113055,26.55,E17,S 860 | 859,1,3,"Baclini, Mrs. Solomon (Latifa Qurban)",female,24,0,3,2666,19.2583,,C 861 | 860,0,3,"Razi, Mr. Raihed",male,,0,0,2629,7.2292,,C 862 | 861,0,3,"Hansen, Mr. Claus Peter",male,41,2,0,350026,14.1083,,S 863 | 862,0,2,"Giles, Mr. Frederick Edward",male,21,1,0,28134,11.5,,S 864 | 863,1,1,"Swift, Mrs. Frederick Joel (Margaret Welles Barron)",female,48,0,0,17466,25.9292,D17,S 865 | 864,0,3,"Sage, Miss. Dorothy Edith ""Dolly""",female,,8,2,CA. 2343,69.55,,S 866 | 865,0,2,"Gill, Mr. John William",male,24,0,0,233866,13,,S 867 | 866,1,2,"Bystrom, Mrs. (Karolina)",female,42,0,0,236852,13,,S 868 | 867,1,2,"Duran y More, Miss. Asuncion",female,27,1,0,SC/PARIS 2149,13.8583,,C 869 | 868,0,1,"Roebling, Mr. Washington Augustus II",male,31,0,0,PC 17590,50.4958,A24,S 870 | 869,0,3,"van Melkebeke, Mr. Philemon",male,,0,0,345777,9.5,,S 871 | 870,1,3,"Johnson, Master. Harold Theodor",male,4,1,1,347742,11.1333,,S 872 | 871,0,3,"Balkic, Mr. Cerin",male,26,0,0,349248,7.8958,,S 873 | 872,1,1,"Beckwith, Mrs. Richard Leonard (Sallie Monypeny)",female,47,1,1,11751,52.5542,D35,S 874 | 873,0,1,"Carlsson, Mr. Frans Olof",male,33,0,0,695,5,B51 B53 B55,S 875 | 874,0,3,"Vander Cruyssen, Mr. Victor",male,47,0,0,345765,9,,S 876 | 875,1,2,"Abelson, Mrs. Samuel (Hannah Wizosky)",female,28,1,0,P/PP 3381,24,,C 877 | 876,1,3,"Najib, Miss. Adele Kiamie ""Jane""",female,15,0,0,2667,7.225,,C 878 | 877,0,3,"Gustafsson, Mr. Alfred Ossian",male,20,0,0,7534,9.8458,,S 879 | 878,0,3,"Petroff, Mr. Nedelio",male,19,0,0,349212,7.8958,,S 880 | 879,0,3,"Laleff, Mr. Kristo",male,,0,0,349217,7.8958,,S 881 | 880,1,1,"Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)",female,56,0,1,11767,83.1583,C50,C 882 | 881,1,2,"Shelley, Mrs. William (Imanita Parrish Hall)",female,25,0,1,230433,26,,S 883 | 882,0,3,"Markun, Mr. Johann",male,33,0,0,349257,7.8958,,S 884 | 883,0,3,"Dahlberg, Miss. Gerda Ulrika",female,22,0,0,7552,10.5167,,S 885 | 884,0,2,"Banfield, Mr. Frederick James",male,28,0,0,C.A./SOTON 34068,10.5,,S 886 | 885,0,3,"Sutehall, Mr. Henry Jr",male,25,0,0,SOTON/OQ 392076,7.05,,S 887 | 886,0,3,"Rice, Mrs. William (Margaret Norton)",female,39,0,5,382652,29.125,,Q 888 | 887,0,2,"Montvila, Rev. Juozas",male,27,0,0,211536,13,,S 889 | 888,1,1,"Graham, Miss. Margaret Edith",female,19,0,0,112053,30,B42,S 890 | 889,0,3,"Johnston, Miss. Catherine Helen ""Carrie""",female,,1,2,W./C. 6607,23.45,,S 891 | 890,1,1,"Behr, Mr. Karl Howell",male,26,0,0,111369,30,C148,C 892 | 891,0,3,"Dooley, Mr. Patrick",male,32,0,0,370376,7.75,,Q 893 | -------------------------------------------------------------------------------- /contenido.curso/000.recursos/db/001.link.descarga.txt: -------------------------------------------------------------------------------- 1 | https://drive.google.com/file/d/11h_RdXz-VT1nlRX_pA_e7wJyjm3lTUBR/view?usp=sharing -------------------------------------------------------------------------------- /contenido.curso/000.recursos/db/002.modelo.relacional.blanco.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/000.recursos/db/002.modelo.relacional.blanco.png -------------------------------------------------------------------------------- /contenido.curso/000.recursos/db/003.modelo.relacional.negro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/000.recursos/db/003.modelo.relacional.negro.png -------------------------------------------------------------------------------- /contenido.curso/000.recursos/db/004.eventos.sql: -------------------------------------------------------------------------------- 1 | 2 | -- ESQUEMA: parranda 3 | CREATE SCHEMA IF NOT EXISTS parranda; 4 | 5 | 6 | -- TABLA: parranda.tipo_musica 7 | CREATE TABLE IF NOT EXISTS parranda.tipo_musica ( 8 | id_tipo_musica TINYINT NOT NULL, 9 | nombre_genero_musica VARCHAR(30) NOT NULL, 10 | activo VARCHAR(1) NOT NULL CHECK(activo IN ('S', 'N')), 11 | PRIMARY KEY(id_tipo_musica) 12 | ); 13 | COMMENT ON COLUMN parranda.tipo_musica.id_tipo_musica IS 'llave primaria de la tabla'; 14 | COMMENT ON COLUMN parranda.tipo_musica.nombre_genero_musica IS 'nombre genero musical'; 15 | COMMENT ON COLUMN parranda.tipo_musica.activo IS 'controla si el registro esta activo o inactivo'; 16 | 17 | INSERT INTO parranda.tipo_musica VALUES 18 | (1, 'vallenato', 'S'), 19 | (2, 'tango', 'S'), 20 | (3, 'cumbia', 'S'), 21 | (4, 'reguetón', 'S'), 22 | (5, 'bambuco', 'S'), 23 | (6, 'tropical', 'S'), 24 | (7, 'merengue', 'S'), 25 | (8, 'pop', 'S'), 26 | (9, 'salsa', 'S'), 27 | (10, 'rock', 'S'); 28 | 29 | -- TABLA: parranda.tipo_genero_persona 30 | CREATE TABLE IF NOT EXISTS parranda.tipo_genero_persona ( 31 | id_genero_persona TINYINT NOT NULL, 32 | nombre_genero_persona VARCHAR(10) NOT NULL, 33 | activo VARCHAR(1) NOT NULL CHECK(activo IN ('S', 'N')), 34 | PRIMARY KEY(id_genero_persona) 35 | ); 36 | 37 | COMMENT ON COLUMN parranda.tipo_genero_persona.id_genero_persona IS 'llave primaria de la tabla'; 38 | COMMENT ON COLUMN parranda.tipo_genero_persona.nombre_genero_persona IS 'nombre genero persona'; 39 | COMMENT ON COLUMN parranda.tipo_genero_persona.activo IS 'controla si el registro esta activo o inactivo'; 40 | 41 | INSERT INTO parranda.tipo_genero_persona VALUES 42 | (1, 'hombre', 'S'), 43 | (2, 'mujer', 'S'), 44 | (3, 'otro', 'S'); 45 | 46 | -- TABLA: parranda.tipo_dieta 47 | CREATE TABLE IF NOT EXISTS parranda.tipo_dieta ( 48 | id_tipo_dieta TINYINT NOT NULL, 49 | nombre_dieta VARCHAR(20) NOT NULL, 50 | activo VARCHAR(1) NOT NULL CHECK(activo IN ('S', 'N')), 51 | PRIMARY KEY(id_tipo_dieta) 52 | ); 53 | 54 | COMMENT ON COLUMN parranda.tipo_dieta.id_tipo_dieta IS 'llave primaria de la tabla'; 55 | COMMENT ON COLUMN parranda.tipo_dieta.nombre_dieta IS 'nombre dieta persona'; 56 | COMMENT ON COLUMN parranda.tipo_dieta.activo IS 'controla si el registro esta activo o inactivo'; 57 | 58 | INSERT INTO parranda.tipo_dieta VALUES 59 | (1, 'pescetariano', 'S'), 60 | (2, 'vegetariano', 'S'), 61 | (3, 'carnívoro', 'S'), 62 | (4, 'vegano', 'S'); 63 | 64 | -- TABLA: parranda.tipo_menu 65 | CREATE TABLE IF NOT EXISTS parranda.tipo_menu ( 66 | id_tipo_menu TINYINT NOT NULL, 67 | nombre_menu VARCHAR(100) NOT NULL, 68 | id_tipo_dieta TINYINT NOT NULL REFERENCES parranda.tipo_dieta(id_tipo_dieta), 69 | activo VARCHAR(1) NOT NULL CHECK(activo IN ('S', 'N')), 70 | PRIMARY KEY(id_tipo_menu) 71 | ); 72 | 73 | COMMENT ON COLUMN parranda.tipo_menu.id_tipo_menu IS 'llave primaria de la tabla'; 74 | COMMENT ON COLUMN parranda.tipo_menu.nombre_menu IS 'nombre del menú'; 75 | COMMENT ON COLUMN parranda.tipo_menu.id_tipo_dieta IS 'tipo diega persona, referencia parranda.tipo_dieta.id_tipo_dieta'; 76 | COMMENT ON COLUMN parranda.tipo_menu.activo IS 'controla si el registro esta activo o inactivo'; 77 | 78 | INSERT INTO parranda.tipo_menu VALUES 79 | (1, 'cazuela de mariscos', 1, 'S'), 80 | (2, 'filete de salmón', 1, 'S'), 81 | (3, 'ceviche de camarón', 1, 'S'), 82 | (4, 'arepas de choclo con queso', 2, 'S'), 83 | (5, 'sancocho de guineo', 2, 'S'), 84 | (6, 'ensalada de aguacate y mango', 2, 'S'), 85 | (7, 'cerdo apanado en salsas', 3, 'S'), 86 | (8, 'solomito asado', 3, 'S'), 87 | (9, 'pollo apanado en salsas', 3, 'S'), 88 | (10, 'lentejas guisadas', 4, 'S'), 89 | (11, 'empanadas de yuca', 4, 'S'), 90 | (12, 'frijoles simples', 4, 'S'); 91 | 92 | -- TABLA: parranda.usuarios 93 | CREATE TABLE IF NOT EXISTS parranda.usuarios ( 94 | id_usuario INTEGER NOT NULL, 95 | identificacion VARCHAR(20) NOT NULL UNIQUE, 96 | primer_nombre VARCHAR(30) NOT NULL, 97 | segundo_nombre VARCHAR(30), 98 | primer_apellido VARCHAR(30) NOT NULL, 99 | segundo_apellido VARCHAR(30), 100 | telefono VARCHAR(20) NOT NULL, 101 | id_genero_persona TINYINT NOT NULL REFERENCES parranda.tipo_genero_persona(id_genero_persona), 102 | activo VARCHAR(1) NOT NULL CHECK(activo IN ('S', 'N')), 103 | PRIMARY KEY(id_usuario) 104 | ); 105 | 106 | COMMENT ON COLUMN parranda.usuarios.id_usuario IS 'llave primaria de la tabla'; 107 | COMMENT ON COLUMN parranda.usuarios.identificacion IS 'identificación de la persona'; 108 | COMMENT ON COLUMN parranda.usuarios.primer_nombre IS 'primer nombre de la persona'; 109 | COMMENT ON COLUMN parranda.usuarios.segundo_nombre IS 'segundo nombre de la persona'; 110 | COMMENT ON COLUMN parranda.usuarios.primer_apellido IS 'primer apellido de la persona'; 111 | COMMENT ON COLUMN parranda.usuarios.segundo_apellido IS 'segundo apellido de la persona'; 112 | COMMENT ON COLUMN parranda.usuarios.telefono IS 'telefono de la persona'; 113 | COMMENT ON COLUMN parranda.usuarios.id_genero_persona IS 'tipo genero persona, referencia parranda.tipo_genero_persona.id_genero_persona'; 114 | COMMENT ON COLUMN parranda.usuarios.activo IS 'controla si el registro esta activo o inactivo'; 115 | 116 | 117 | INSERT INTO parranda.usuarios ( 118 | id_usuario, 119 | primer_nombre, 120 | segundo_nombre, 121 | primer_apellido, 122 | segundo_apellido, 123 | telefono, 124 | identificacion, 125 | id_genero_persona, 126 | activo 127 | ) VALUES 128 | (1, 'Juan', NULL, 'Espinosa', 'González', '6046390826', '1095672677', 1, 'S'), 129 | (2, 'José', 'Luis', 'Martínez', NULL, '3179054864', '1052988648', 2, 'S'), 130 | (3, 'Orlando', 'Ignacio', 'Arévalo', 'Pinzón', '3110601680', '32057626', 3, 'S'), 131 | (4, 'Andrés', 'Carlos', 'Cuéllar', 'Lara', '3183275188', '5173540', 1, 'S'), 132 | (5, 'Fabio', NULL, 'Gómez', NULL, '3163866597', '1277218634', 2, 'S'), 133 | (6, 'Paulina', 'Karen', 'Pineda', NULL, '3246891544', '2238096', 1, 'S'), 134 | (7, 'Milena', 'María', 'Granados', NULL, '3063261820', '1112962067', 3, 'S'), 135 | (8, 'Nelly', 'Yolanda', 'Zapata', 'Sandoval', '6028985122', '37048740', 2, 'S'), 136 | (9, 'Josué', NULL, 'Muñoz', NULL, '3144504714', '1270174527', 1, 'S'), 137 | (10, 'Eder', 'Vicente', 'Luna', NULL, '3164281821', '32221768', 3, 'S'), 138 | (11, 'Ángela', NULL, 'García', 'Gómez', '6017673905', '1156133390', 2, 'S'), 139 | --(12, 'Ángela', NULL, 'García', 'Gómez', '6017673905', '1156133390', 2, 'S'), 140 | (13, 'Santiago', NULL, 'Sánchez', 'Arango', '3116147501', '64138677', 3, 'S'), 141 | (14, 'Óscar', NULL, 'Vega', NULL, '6042411683', '5672674', 2, 'S'), 142 | (15, 'Samuel', 'Omar', 'Benavides', NULL, '3201227286', '10653477', 2, 'S'), 143 | (16, 'Fernanda', NULL, 'Hernández', NULL, '3036494636', '1070806010', 2, 'S'), 144 | (17, 'Adriana', NULL, 'Agudelo', NULL, '6046276898', '1061672134', 2, 'S'), 145 | (18, 'Liliana', 'Leonor', 'Pineda', 'Hernández', '3214728518', '2697221', 1, 'S'), 146 | (19, 'Edinson', NULL, 'Ramírez', NULL, '3081265978', '6810745', 1, 'S'), 147 | (20, 'Armando', 'Antonio', 'Hurtado', 'Hernández', '18006581340', '91431183', 2, 'S'), 148 | (21, 'Milena', NULL, 'Ojeda', NULL, '3059806659', '5546198', 2, 'S'), 149 | (22, 'Fernando', 'Alberto', 'Sanabria', NULL, '6027232626', '1203617628', 1, 'S'), 150 | (23, 'Kevin', 'Javier', 'Andrade', NULL, '3211392954', '1238804985', 2, 'S'), 151 | (24, 'Liliana', 'Jimena', 'Gutiérrez', 'Zambrano', '3014060093', '1181158956', 3, 'S'), 152 | (25, 'Juan', NULL, 'Vargas', 'Betancur', '3033370751', '32267050', 2, 'S'), 153 | (26, 'Estela', 'Amparo', 'Rivera', 'Vega', '31011463', '1197118561', 3, 'S'), 154 | (27, 'Yolanda', 'Rocío', 'Palacios', NULL, '3182835486', '3536178', 3, 'S'), 155 | (28, 'Gildardo', 'Víctor', 'Ramírez', NULL, '3203374668', '78657032', 3, 'S'), 156 | (29, 'Sofía', 'Dora', 'Méndez', 'Gaviria', '3229713', '1127221678', 2, 'S'), 157 | (30, 'Edgar', NULL, 'González', NULL, '3158896043', '1286547868', 1, 'S'), 158 | (31, 'Jhon', 'Alexander', 'Durán', 'García', '60872318', '7700492', 1, 'S'); 159 | 160 | 161 | -- TABLA: parranda.musica_persona 162 | CREATE TABLE IF NOT EXISTS parranda.musica_persona ( 163 | id_usuario INTEGER NOT NULL REFERENCES parranda.usuarios(id_usuario), 164 | id_tipo_musica TINYINT NOT NULL REFERENCES parranda.tipo_musica(id_tipo_musica), 165 | PRIMARY KEY(id_usuario, id_tipo_musica) 166 | ); 167 | 168 | COMMENT ON COLUMN parranda.musica_persona.id_usuario IS 'usuario para identificar preferencia'; 169 | COMMENT ON COLUMN parranda.musica_persona.id_tipo_musica IS 'tipo musica de prerefencia del usuario'; 170 | 171 | INSERT INTO parranda.musica_persona VALUES 172 | (1, 1), 173 | (1, 2), 174 | (2, 3), 175 | (2, 4), 176 | (3, 5), 177 | (3, 6), 178 | (3, 7), 179 | (3, 8), 180 | (3, 1), 181 | (3, 9), 182 | (3, 2), 183 | (3, 4), 184 | (4, 1), 185 | (4, 3), 186 | (6, 5), 187 | (6, 7), 188 | (6, 4), 189 | (7, 9), 190 | (7, 2), 191 | (7, 6), 192 | (7, 8), 193 | (7, 7), 194 | (7, 3), 195 | (7, 4), 196 | (8, 10), 197 | (8, 3), 198 | (8, 9), 199 | (9, 7), 200 | (9, 8), 201 | (9, 6), 202 | (9, 9), 203 | (9, 2), 204 | (9, 10), 205 | (10, 4), 206 | (10, 5), 207 | (10, 3), 208 | (11, 4), 209 | (11, 7), 210 | (11, 3), 211 | (11, 10), 212 | (11, 5), 213 | (11, 6), 214 | (11, 2), 215 | (11, 8), 216 | (11, 9), 217 | (14, 9), 218 | (14, 10), 219 | (14, 3), 220 | (14, 5), 221 | (14, 8), 222 | (14, 2), 223 | (14, 1), 224 | (14, 6), 225 | (15, 9), 226 | (15, 4), 227 | (15, 3), 228 | (15, 7), 229 | (15, 6), 230 | (16, 1), 231 | (16, 2), 232 | (16, 5), 233 | (16, 8), 234 | (17, 8), 235 | (17, 4), 236 | (17, 10), 237 | (17, 2), 238 | (18, 3), 239 | (18, 6), 240 | (18, 8), 241 | (18, 1), 242 | (18, 5), 243 | (18, 10), 244 | (18, 9), 245 | (18, 7), 246 | (19, 2), 247 | (19, 3), 248 | (19, 4), 249 | (19, 6), 250 | (20, 4), 251 | (20, 2), 252 | (20, 7), 253 | (20, 8), 254 | (20, 1), 255 | (20, 5), 256 | (20, 6), 257 | (21, 6), 258 | (21, 5), 259 | (21, 7), 260 | (21, 3), 261 | (21, 10), 262 | (23, 4), 263 | (23, 9), 264 | (23, 1), 265 | (23, 2), 266 | (23, 3), 267 | (23, 8), 268 | (23, 6), 269 | (23, 5), 270 | (23, 7), 271 | (24, 7), 272 | (24, 1), 273 | (24, 6), 274 | (24, 8), 275 | (24, 9), 276 | (24, 4), 277 | (24, 5), 278 | (25, 3), 279 | (25, 8), 280 | (25, 2), 281 | (25, 5), 282 | (25, 4), 283 | (25, 6), 284 | (25, 9), 285 | (26, 6), 286 | (26, 4), 287 | (26, 7), 288 | (26, 1), 289 | (27, 4), 290 | (27, 3), 291 | (27, 9), 292 | (27, 2), 293 | (27, 7), 294 | (27, 6), 295 | (28, 1), 296 | (28, 8), 297 | (28, 10), 298 | (28, 2), 299 | (28, 7), 300 | (28, 3), 301 | (28, 5), 302 | (28, 4), 303 | (28, 6), 304 | (28, 9), 305 | (29, 10), 306 | (29, 6), 307 | (29, 7), 308 | (29, 1), 309 | (29, 2), 310 | (29, 4), 311 | (29, 3), 312 | (29, 5), 313 | (30, 4), 314 | (30, 10), 315 | (30, 6), 316 | (30, 8), 317 | (30, 1), 318 | (30, 9), 319 | (30, 2), 320 | (31, 8), 321 | (31, 1), 322 | (31, 3), 323 | (31, 5); 324 | 325 | 326 | -- TABLA: plato_persona 327 | CREATE TABLE IF NOT EXISTS parranda.plato_persona ( 328 | id_persona INTEGER NOT NULL, 329 | id_tipo_menu TINYINT NOT NULL, 330 | confirmado VARCHAR(1) NOT NULL CHECK(confirmado IN ('S', 'N')), 331 | PRIMARY KEY(id_persona) 332 | ); 333 | 334 | COMMENT ON COLUMN parranda.plato_persona.id_persona IS 'usuario para identificar preferencia'; 335 | COMMENT ON COLUMN parranda.plato_persona.id_tipo_menu IS 'tipo de plato que comera la persona'; 336 | COMMENT ON COLUMN parranda.plato_persona.confirmado IS 'controla si el usuario confirmo o no asistencia'; 337 | 338 | 339 | INSERT INTO parranda.plato_persona VALUES 340 | (1, 1, 'N'), 341 | (2, 4, 'N'), 342 | (3, 2, 'S'), 343 | (4, 6, 'N'), 344 | (5, 7, 'N'), 345 | (6, 10, 'N'), 346 | (7, 6, 'S'), 347 | (8, 1, 'S'), 348 | (9, 10, 'N'), 349 | (10, 2, 'N'), 350 | (11, 8, 'N'), 351 | (13, 2, 'S'), 352 | (14, 8, 'S'), 353 | (15, 7, 'S'), 354 | (16, 2, 'S'), 355 | (17, 3, 'N'), 356 | (18, 8, 'S'), 357 | (19, 5, 'N'), 358 | (20, 10, 'N'), 359 | (21, 1, 'N'), 360 | (22, 8, 'S'), 361 | (23, 9, 'S'), 362 | (24, 11, 'S'), 363 | (25, 3, 'S'), 364 | (26, 3, 'S'), 365 | (27, 5, 'N'), 366 | (28, 12, 'S'), 367 | (29, 1, 'S'), 368 | (30, 1, 'S'), 369 | (31, 7, 'S'); -------------------------------------------------------------------------------- /contenido.curso/000.recursos/libros/001.duckdb.in.action.motherduck.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/000.recursos/libros/001.duckdb.in.action.motherduck.pdf -------------------------------------------------------------------------------- /contenido.curso/000.recursos/notebooks/bootcamp_dql_clases_template.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "id": "kY4ed9W-VQix" 7 | }, 8 | "source": [ 9 | "![cumf-db](https://i.postimg.cc/PxVdgjnj/Slide4.jpg)\n", 10 | "\n", 11 | "\n", 12 | "\n", 13 | "\n", 14 | "Esta utilidad está diseñada para personas que no tienen fácil acceso a herramientas instaladas y también para fines académicos, facilitando la documentación de los temas vistos en clase.\n", 15 | "\n", 16 | "Recomendaciones especiales:\n", 17 | "\n", 18 | "1. El contenido de la fila de abajo no debe ser modificado, pero debe ejecutarse tal como está.\n", 19 | "\n", 20 | "2. Para ejecutar una sentencia, crea una nueva celda de código y coloca %%sql. Luego, podrás ejecutar sentencias en la base de datos. Si no tienes experiencia con notebooks, visita este [link](https://www.youtube.com/watch?v=8VFYs3Ot_aA&t=629s).\n", 21 | "\n", 22 | "3. Este notebook será sumamente útil para la clase de `SELECTS`." 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": null, 28 | "metadata": { 29 | "id": "g9uW85kkPf79" 30 | }, 31 | "outputs": [], 32 | "source": [ 33 | "!pip install duckdb notebook jupyterlab pandas duckdb-engine jupysql toml SQLAlchemy &> /dev/null ;\n", 34 | "\n", 35 | "import os\n", 36 | "import pathlib\n", 37 | "import pandas as pd\n", 38 | "from sqlalchemy import create_engine, text\n", 39 | "\n", 40 | "%config SqlMagic.autopandas = True\n", 41 | "%config SqlMagic.feedback = False\n", 42 | "%config SqlMagic.displaycon = False\n", 43 | "%config SqlMagic.short_errors = True\n", 44 | "%config SqlMagic.style = \"DEFAULT\"\n", 45 | "%config SqlMagic.lazy_execution = False\n", 46 | "%config SqlMagic.displaylimit = 0\n", 47 | "%config SqlMagic.named_parameters=\"enabled\"\n", 48 | "\n", 49 | "db: str = \"bootcamp.db\"\n", 50 | "\n", 51 | "engine = create_engine(\n", 52 | " f\"duckdb:///{db}\",\n", 53 | " connect_args={\n", 54 | " 'read_only': False,\n", 55 | " 'config': {\n", 56 | " 'access_mode': 'READ_WRITE',\n", 57 | " }\n", 58 | " }\n", 59 | ")\n", 60 | "\n", 61 | "with engine.connect() as conn:\n", 62 | " conn.execute(\n", 63 | " text(f\"\"\" INSTALL httpfs; LOAD httpfs;\"\"\"\n", 64 | " )\n", 65 | " )\n", 66 | " conn.commit()\n", 67 | "\n", 68 | "%reload_ext sql\n", 69 | "%sql engine" 70 | ] 71 | }, 72 | { 73 | "cell_type": "code", 74 | "execution_count": null, 75 | "metadata": { 76 | "colab": { 77 | "base_uri": "https://localhost:8080/", 78 | "height": 81 79 | }, 80 | "id": "ujdo5erDQ2z3", 81 | "outputId": "736bbb7b-b27d-41e4-da37-7c700e5f9c8e" 82 | }, 83 | "outputs": [ 84 | { 85 | "data": { 86 | "text/html": [ 87 | "
\n", 88 | "\n", 101 | "\n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | "
result
01
\n", 115 | "
" 116 | ], 117 | "text/plain": [ 118 | " result\n", 119 | "0 1" 120 | ] 121 | }, 122 | "execution_count": 3, 123 | "metadata": {}, 124 | "output_type": "execute_result" 125 | } 126 | ], 127 | "source": [ 128 | "%%sql\n", 129 | "SELECT 1 as result" 130 | ] 131 | }, 132 | { 133 | "cell_type": "code", 134 | "execution_count": null, 135 | "metadata": { 136 | "id": "mz_qBY91iI2n" 137 | }, 138 | "outputs": [], 139 | "source": [ 140 | "%%sql\n", 141 | "\n", 142 | "select now() as 'NOW', 1 as 'COUNT', today() as 'TODAY'" 143 | ] 144 | }, 145 | { 146 | "cell_type": "code", 147 | "execution_count": null, 148 | "metadata": { 149 | "id": "EbN55RVOiI2n" 150 | }, 151 | "outputs": [], 152 | "source": [ 153 | "# -- Cerrar conexión a la base de datos.\n", 154 | "\n", 155 | "try:\n", 156 | " engine.close()\n", 157 | "except:\n", 158 | " pass" 159 | ] 160 | } 161 | ], 162 | "metadata": { 163 | "colab": { 164 | "provenance": [] 165 | }, 166 | "kernelspec": { 167 | "display_name": "Python 3", 168 | "name": "python3" 169 | }, 170 | "language_info": { 171 | "codemirror_mode": { 172 | "name": "ipython", 173 | "version": 3 174 | }, 175 | "file_extension": ".py", 176 | "mimetype": "text/x-python", 177 | "name": "python", 178 | "nbconvert_exporter": "python", 179 | "pygments_lexer": "ipython3", 180 | "version": "3.12.5" 181 | } 182 | }, 183 | "nbformat": 4, 184 | "nbformat_minor": 0 185 | } -------------------------------------------------------------------------------- /contenido.curso/000.recursos/videos/001.intro.curso.txt: -------------------------------------------------------------------------------- 1 | https://drive.google.com/file/d/1Zg0l3odpdYLX1En7G6iktY-yQnJU8oa8/view?usp=sharing 2 | -------------------------------------------------------------------------------- /contenido.curso/000.recursos/videos/002.entrega.trabajos.txt: -------------------------------------------------------------------------------- 1 | https://drive.google.com/file/d/1gQDbv4EbOQWUwEPcIhCVK2lf52LmqzyB/view?usp=sharing -------------------------------------------------------------------------------- /contenido.curso/001.imagenes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/001.imagenes/.gitkeep -------------------------------------------------------------------------------- /contenido.curso/002.documentos/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/002.documentos/.gitkeep -------------------------------------------------------------------------------- /contenido.curso/002.documentos/000.bienvenida.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/002.documentos/000.bienvenida.pdf -------------------------------------------------------------------------------- /contenido.curso/002.documentos/001.intro.curso.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/002.documentos/001.intro.curso.pdf -------------------------------------------------------------------------------- /contenido.curso/002.documentos/002.tipos.de.datos.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/002.documentos/002.tipos.de.datos.pdf -------------------------------------------------------------------------------- /contenido.curso/002.documentos/003.esquemas.catalogos.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/002.documentos/003.esquemas.catalogos.pdf -------------------------------------------------------------------------------- /contenido.curso/002.documentos/004.tipos.transacciones.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/002.documentos/004.tipos.transacciones.pdf -------------------------------------------------------------------------------- /contenido.curso/002.documentos/005.tipos.datos.simples.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/002.documentos/005.tipos.datos.simples.pdf -------------------------------------------------------------------------------- /contenido.curso/002.documentos/006.tipos.datos.complejos.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/002.documentos/006.tipos.datos.complejos.pdf -------------------------------------------------------------------------------- /contenido.curso/002.documentos/007.extensiones.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/002.documentos/007.extensiones.pdf -------------------------------------------------------------------------------- /contenido.curso/002.documentos/008.uso.parquet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/002.documentos/008.uso.parquet.pdf -------------------------------------------------------------------------------- /contenido.curso/002.documentos/009.geodata.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/002.documentos/009.geodata.pdf -------------------------------------------------------------------------------- /contenido.curso/003.normalizacion/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/003.normalizacion/.gitkeep -------------------------------------------------------------------------------- /contenido.curso/003.normalizacion/001.normalizacion.3FN.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/003.normalizacion/001.normalizacion.3FN.xlsx -------------------------------------------------------------------------------- /contenido.curso/004.modelo.datos/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/004.modelo.datos/.gitkeep -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/005.sesiones/.gitkeep -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/001.10092024/000.sesion_1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/005.sesiones/001.10092024/000.sesion_1.pdf -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/002.12092024/000.sesion_2.conceptos.tipos.bd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/005.sesiones/002.12092024/000.sesion_2.conceptos.tipos.bd.pdf -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/003.17102024/000.sesion_3.conceptosbd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/005.sesiones/003.17102024/000.sesion_3.conceptosbd.pdf -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/004.19092024/000.sesion_4.cnormalizacion.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/005.sesiones/004.19092024/000.sesion_4.cnormalizacion.pdf -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/005.24092024/000.descarga.archivo.txt: -------------------------------------------------------------------------------- 1 | 2 | desde google drive: 3 | https://docs.google.com/spreadsheets/d/1X_1ELWu3IbbWuQHEB1Rb-I0PzD6znbKt_tyFPe0IvoU/edit?usp=sharing 4 | 5 | desde el repositorio: 6 | https://github.com/codingupmyfuture/bootcampduckdb/tree/main/contenido.curso/003.normalizacion 7 | 8 | herramienta para modelar: 9 | https://www.drawdb.app 10 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/006.26042024/001.concurso.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | pagina oficial del dataset 4 | https://www.kaggle.com/code/shivamb/netflix-shows-and-movies-exploratory-analysis -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/006.26042024/parranda_deivis_diagrama.ddb: -------------------------------------------------------------------------------- 1 | { 2 | "author": "Unnamed", 3 | "title": "parranda_deivis", 4 | "date": "2024-09-26T23:26:19.119Z", 5 | "tables": [ 6 | { 7 | "id": 0, 8 | "name": "parranda.tipo_musica", 9 | "x": -850.7164062499993, 10 | "y": -321.1046875000001, 11 | "fields": [ 12 | { 13 | "name": "id_tipo_musica", 14 | "type": "SMALLINT", 15 | "default": "", 16 | "check": "", 17 | "primary": true, 18 | "unique": false, 19 | "notNull": true, 20 | "increment": false, 21 | "comment": "Esta es la PK que controla el ID para cada género de música", 22 | "id": 0, 23 | "size": "", 24 | "values": [] 25 | }, 26 | { 27 | "name": "nombre_genero_musica", 28 | "type": "VARCHAR", 29 | "default": "", 30 | "check": "", 31 | "primary": false, 32 | "unique": false, 33 | "notNull": true, 34 | "increment": false, 35 | "comment": "nombre del genero músical, eje: salsa, bachata, etc", 36 | "id": 1, 37 | "size": 30 38 | }, 39 | { 40 | "name": "activo", 41 | "type": "VARCHAR", 42 | "default": "", 43 | "check": "activo IN ('S', 'N')", 44 | "primary": false, 45 | "unique": false, 46 | "notNull": true, 47 | "increment": false, 48 | "comment": "Para eliminación lógica", 49 | "id": 2, 50 | "size": 1 51 | } 52 | ], 53 | "comment": "", 54 | "indices": [], 55 | "color": "#f03c3c", 56 | "key": 1727389644997 57 | }, 58 | { 59 | "id": 1, 60 | "name": "parranda.tipo_genero_persona", 61 | "x": -871.5421875, 62 | "y": -60.696874999999864, 63 | "fields": [ 64 | { 65 | "name": "id_genero_persona", 66 | "type": "SMALLINT", 67 | "default": "", 68 | "check": "", 69 | "primary": true, 70 | "unique": false, 71 | "notNull": true, 72 | "increment": false, 73 | "comment": "", 74 | "id": 0, 75 | "size": "", 76 | "values": [] 77 | }, 78 | { 79 | "name": "nombre_genero_persobna", 80 | "type": "VARCHAR", 81 | "default": "", 82 | "check": "", 83 | "primary": false, 84 | "unique": false, 85 | "notNull": true, 86 | "increment": false, 87 | "comment": "", 88 | "id": 1, 89 | "size": 10 90 | }, 91 | { 92 | "name": "activo", 93 | "type": "VARCHAR", 94 | "default": "", 95 | "check": "activo IN ('S', 'N')", 96 | "primary": false, 97 | "unique": false, 98 | "notNull": true, 99 | "increment": false, 100 | "comment": "", 101 | "id": 2, 102 | "size": 1 103 | } 104 | ], 105 | "comment": "", 106 | "indices": [], 107 | "color": "#f03c3c", 108 | "key": 1727389654458 109 | }, 110 | { 111 | "id": 2, 112 | "name": "parranda.tipo_dieta", 113 | "x": -823.346875, 114 | "y": 408.79687500000017, 115 | "fields": [ 116 | { 117 | "name": "id_tipo_dieta", 118 | "type": "SMALLINT", 119 | "default": "", 120 | "check": "", 121 | "primary": true, 122 | "unique": false, 123 | "notNull": true, 124 | "increment": false, 125 | "comment": "", 126 | "id": 0, 127 | "size": "", 128 | "values": [] 129 | }, 130 | { 131 | "name": "nombre_dieta", 132 | "type": "VARCHAR", 133 | "default": "", 134 | "check": "", 135 | "primary": false, 136 | "unique": false, 137 | "notNull": true, 138 | "increment": false, 139 | "comment": "", 140 | "id": 1, 141 | "size": 20 142 | }, 143 | { 144 | "name": "activo", 145 | "type": "VARCHAR", 146 | "default": "", 147 | "check": "activo IN ('S', 'N')", 148 | "primary": false, 149 | "unique": false, 150 | "notNull": true, 151 | "increment": false, 152 | "comment": "", 153 | "id": 2, 154 | "size": 1 155 | } 156 | ], 157 | "comment": "", 158 | "indices": [], 159 | "color": "#f03c3c", 160 | "key": 1727389654634 161 | }, 162 | { 163 | "id": 3, 164 | "name": "parranda.tipo_menu", 165 | "x": -814.20859375, 166 | "y": 154.0492187499998, 167 | "fields": [ 168 | { 169 | "name": "id_tipo_menu", 170 | "type": "INTEGER", 171 | "default": "", 172 | "check": "", 173 | "primary": true, 174 | "unique": true, 175 | "notNull": true, 176 | "increment": true, 177 | "comment": "", 178 | "id": 0 179 | }, 180 | { 181 | "name": "nombre_menu", 182 | "type": "VARCHAR", 183 | "default": "", 184 | "check": "", 185 | "primary": false, 186 | "unique": false, 187 | "notNull": true, 188 | "increment": false, 189 | "comment": "", 190 | "id": 1, 191 | "size": 100 192 | }, 193 | { 194 | "name": "id_tipo_dieta", 195 | "type": "SMALLINT", 196 | "default": "", 197 | "check": "", 198 | "primary": false, 199 | "unique": false, 200 | "notNull": true, 201 | "increment": false, 202 | "comment": "", 203 | "id": 2, 204 | "size": "", 205 | "values": [] 206 | }, 207 | { 208 | "name": "activo", 209 | "type": "VARCHAR", 210 | "default": "", 211 | "check": "activo IN ('S', 'N')", 212 | "primary": false, 213 | "unique": false, 214 | "notNull": true, 215 | "increment": false, 216 | "comment": "", 217 | "id": 3, 218 | "size": 1 219 | } 220 | ], 221 | "comment": "", 222 | "indices": [], 223 | "color": "#f03c3c", 224 | "key": 1727389654785 225 | }, 226 | { 227 | "id": 4, 228 | "name": "parranda.usuarios", 229 | "x": -876.27421875, 230 | "y": -872.0748779296874, 231 | "fields": [ 232 | { 233 | "name": "id_usuario", 234 | "type": "INTEGER", 235 | "default": "", 236 | "check": "", 237 | "primary": true, 238 | "unique": false, 239 | "notNull": true, 240 | "increment": false, 241 | "comment": "", 242 | "id": 0 243 | }, 244 | { 245 | "name": "identificacion", 246 | "type": "VARCHAR", 247 | "default": "", 248 | "check": "", 249 | "primary": false, 250 | "unique": true, 251 | "notNull": true, 252 | "increment": false, 253 | "comment": "", 254 | "id": 1, 255 | "size": 20 256 | }, 257 | { 258 | "name": "primer_nombre", 259 | "type": "VARCHAR", 260 | "default": "", 261 | "check": "", 262 | "primary": false, 263 | "unique": false, 264 | "notNull": true, 265 | "increment": false, 266 | "comment": "", 267 | "id": 2, 268 | "size": 30 269 | }, 270 | { 271 | "name": "segundo_nombre", 272 | "type": "VARCHAR", 273 | "default": "", 274 | "check": "", 275 | "primary": false, 276 | "unique": false, 277 | "notNull": false, 278 | "increment": false, 279 | "comment": "", 280 | "id": 3, 281 | "size": 30 282 | }, 283 | { 284 | "name": "primer_apellido", 285 | "type": "VARCHAR", 286 | "default": "", 287 | "check": "|", 288 | "primary": false, 289 | "unique": false, 290 | "notNull": true, 291 | "increment": false, 292 | "comment": "", 293 | "id": 4, 294 | "size": 30 295 | }, 296 | { 297 | "name": "segundo_apellido", 298 | "type": "VARCHAR", 299 | "default": "", 300 | "check": "", 301 | "primary": false, 302 | "unique": false, 303 | "notNull": false, 304 | "increment": false, 305 | "comment": "", 306 | "id": 5, 307 | "size": 30 308 | }, 309 | { 310 | "name": "telefono", 311 | "type": "VARCHAR", 312 | "default": "", 313 | "check": "", 314 | "primary": false, 315 | "unique": false, 316 | "notNull": true, 317 | "increment": false, 318 | "comment": "", 319 | "id": 6, 320 | "size": 20 321 | }, 322 | { 323 | "name": "id_genero_persona", 324 | "type": "SMALLINT", 325 | "default": "", 326 | "check": "", 327 | "primary": false, 328 | "unique": false, 329 | "notNull": true, 330 | "increment": false, 331 | "comment": "", 332 | "id": 7, 333 | "size": "", 334 | "values": [] 335 | }, 336 | { 337 | "name": "activo", 338 | "type": "VARCHAR", 339 | "default": "", 340 | "check": "activo IN ('S', 'N')", 341 | "primary": false, 342 | "unique": false, 343 | "notNull": true, 344 | "increment": false, 345 | "comment": "", 346 | "id": 8, 347 | "size": 1 348 | } 349 | ], 350 | "comment": "", 351 | "indices": [], 352 | "color": "#7d9dff", 353 | "key": 1727391134946 354 | }, 355 | { 356 | "id": 5, 357 | "name": "parranda.musica_persona", 358 | "x": 416.8671874999992, 359 | "y": -768.5202880859375, 360 | "fields": [ 361 | { 362 | "name": "id_usuario", 363 | "type": "INTEGER", 364 | "default": "", 365 | "check": "", 366 | "primary": true, 367 | "unique": false, 368 | "notNull": true, 369 | "increment": false, 370 | "comment": "", 371 | "id": 0 372 | }, 373 | { 374 | "name": "id_tipo_musica", 375 | "type": "SMALLINT", 376 | "default": "", 377 | "check": "", 378 | "primary": true, 379 | "unique": false, 380 | "notNull": true, 381 | "increment": false, 382 | "comment": "", 383 | "id": 1, 384 | "size": "", 385 | "values": [] 386 | } 387 | ], 388 | "comment": "", 389 | "indices": [], 390 | "color": "#89e667", 391 | "key": 1727392206682 392 | }, 393 | { 394 | "id": 6, 395 | "name": "parranda.plato_persona", 396 | "x": 147.1562499999993, 397 | "y": -544.3458740234373, 398 | "fields": [ 399 | { 400 | "name": "id_persona", 401 | "type": "INTEGER", 402 | "default": "", 403 | "check": "", 404 | "primary": true, 405 | "unique": false, 406 | "notNull": true, 407 | "increment": false, 408 | "comment": "", 409 | "id": 0 410 | }, 411 | { 412 | "name": "id_tipo_menu", 413 | "type": "SMALLINT", 414 | "default": "", 415 | "check": "", 416 | "primary": false, 417 | "unique": false, 418 | "notNull": true, 419 | "increment": false, 420 | "comment": "", 421 | "id": 1, 422 | "size": "", 423 | "values": [] 424 | }, 425 | { 426 | "name": "confirmado", 427 | "type": "VARCHAR", 428 | "default": "", 429 | "check": "activo IN ('S', 'N')", 430 | "primary": false, 431 | "unique": false, 432 | "notNull": true, 433 | "increment": false, 434 | "comment": "", 435 | "id": 2, 436 | "size": 1 437 | } 438 | ], 439 | "comment": "", 440 | "indices": [], 441 | "color": "#89e667", 442 | "key": 1727392604975 443 | } 444 | ], 445 | "relationships": [ 446 | { 447 | "startTableId": 1, 448 | "startFieldId": 0, 449 | "endTableId": 4, 450 | "endFieldId": 7, 451 | "cardinality": "one_to_many", 452 | "updateConstraint": "No action", 453 | "deleteConstraint": "No action", 454 | "name": "parranda.tipo_genero_persona_id_genero_persona_fk", 455 | "id": 0 456 | }, 457 | { 458 | "startTableId": 2, 459 | "startFieldId": 0, 460 | "endTableId": 3, 461 | "endFieldId": 2, 462 | "cardinality": "one_to_many", 463 | "updateConstraint": "No action", 464 | "deleteConstraint": "No action", 465 | "name": "parranda.tipo_dieta_id_tipo_dieta_fk", 466 | "id": 1 467 | }, 468 | { 469 | "startTableId": 4, 470 | "startFieldId": 0, 471 | "endTableId": 5, 472 | "endFieldId": 0, 473 | "cardinality": "one_to_many", 474 | "updateConstraint": "No action", 475 | "deleteConstraint": "No action", 476 | "name": "parranda.usuarios_id_usuario_fk", 477 | "id": 2 478 | }, 479 | { 480 | "startTableId": 0, 481 | "startFieldId": 0, 482 | "endTableId": 5, 483 | "endFieldId": 1, 484 | "cardinality": "one_to_many", 485 | "updateConstraint": "No action", 486 | "deleteConstraint": "No action", 487 | "name": "parranda.tipo_musica_id_tipo_musica_fk", 488 | "id": 3 489 | }, 490 | { 491 | "startTableId": 4, 492 | "startFieldId": 0, 493 | "endTableId": 6, 494 | "endFieldId": 0, 495 | "cardinality": "one_to_one", 496 | "updateConstraint": "No action", 497 | "deleteConstraint": "No action", 498 | "name": "parranda.usuarios_id_usuario_fk", 499 | "id": 4 500 | }, 501 | { 502 | "startTableId": 3, 503 | "startFieldId": 0, 504 | "endTableId": 6, 505 | "endFieldId": 1, 506 | "cardinality": "one_to_many", 507 | "updateConstraint": "No action", 508 | "deleteConstraint": "No action", 509 | "name": "parranda.tipo_menu_id_tipo_menu_fk", 510 | "id": 5 511 | } 512 | ], 513 | "notes": [ 514 | { 515 | "id": 0, 516 | "x": 836.3609374999999, 517 | "y": -312.3890625, 518 | "title": "esquema_aplicar_tablas", 519 | "content": "El esquema que almacenara todos los objetos (entidades)se llamara parranda", 520 | "color": "#fcf7ac", 521 | "height": 162 522 | } 523 | ], 524 | "subjectAreas": [ 525 | { 526 | "id": 0, 527 | "name": "tablas_tipo", 528 | "x": -973.4703124999999, 529 | "y": -332.3270263671875, 530 | "width": 727.7718749999999, 531 | "height": 993.984521484375, 532 | "color": "#f03c3c" 533 | } 534 | ], 535 | "database": "postgresql", 536 | "types": [], 537 | "enums": [] 538 | } -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/006.26042024/solucion.er/netflix_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/005.sesiones/006.26042024/solucion.er/netflix_diagram.png -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/007.01102024/001.transversales.sql: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | ___ ___ _ 4 | | \| \| | 5 | | |) | |) | |__ 6 | |___/|___/|____| 7 | 8 | Data Definition Language 9 | - CREATE : Crea nuevos objetos en la base de datos, como tablas, índices o vistas. 10 | - ALTER : Modifica la estructura de un objeto existente, como agregar o eliminar columnas en una tabla. 11 | - DROP : Elimina un objeto de la base de datos, como una tabla o índice. 12 | - TRUNCATE : Elimina todos los registros de una tabla sin eliminar la tabla misma (lo veremos en DML) 13 | 14 | 15 | REFERENCIAS: 16 | esquemas : https://github.com/codingupmyfuture/bootcampduckdb/blob/main/contenido.curso/002.documentos/003.esquemas.catalogos.pdf 17 | transacciones: https://github.com/codingupmyfuture/bootcampduckdb/blob/main/contenido.curso/002.documentos/004.tipos.transacciones.pdf 18 | 19 | 20 | TRANSVERSALES: 21 | 22 | */ 23 | 24 | 25 | -- 1. comentarios de una sola linea 26 | 27 | -- 2. comentarios múlti linea 28 | 29 | /* 30 | * 2. 31 | comentarios 32 | de 33 | múltiples 34 | lineas 35 | */ 36 | 37 | 38 | -- 3. show schemas | mostrara la bd por defecto a la que esta creando 39 | 40 | SHOW DATABASES; 41 | 42 | -- 4. crear esquemas | mostrara la bd por defecto a la que esta creando 43 | -- referencia: https://duckdb.org/docs/sql/statements/create_schema.html 44 | 45 | 46 | -- 4.1 elemental 47 | CREATE SCHEMA demo1; 48 | 49 | 50 | -- 4.2 recomendada 51 | CREATE SCHEMA IF NOT EXISTS demo1; 52 | 53 | 54 | -- 5. ubicarse en un esquemas | 55 | -- referencias: https://duckdb.org/docs/sql/statements/use.html 56 | -- https://motherduck.com/docs/key-tasks/database-operations/switching-the-current-database/ 57 | 58 | -- 5.1 simple 59 | USE demo1; 60 | 61 | -- full ruta 62 | USE training.main; 63 | 64 | -- 6. mostrar esquema donde esta ubicado 65 | SELECT current_schema(); 66 | 67 | 68 | -- 6. mostrar tablas 69 | -- referencias: https://duckdb.org/docs/guides/meta/list_tables.html 70 | 71 | -- 6.1 simple 72 | SHOW TABLES; 73 | 74 | -- 6.2 detallada 75 | SHOW ALL TABLES; 76 | 77 | 78 | -- 7. describir tabla 79 | -- referencias: https://duckdb.org/docs/sql/statements/describe.html 80 | DESCRIBE esquema.tabla; -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/007.01102024/002.create.sql: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | 4 | ___ ___ ___ _ _____ ___ 5 | / __| _ \ __| /_\_ _| __| 6 | | (__| / _| / _ \| | | _| 7 | \___|_|_\___/_/ \_\_| |___| 8 | 9 | tablas. 10 | 11 | excelente practica, siempre agregar el esquema.objecto 12 | 13 | */ 14 | 15 | 16 | -- 1. simple | recomendación: esquema.tabla 17 | -- referencias: https://duckdb.org/docs/sql/statements/create_table.html 18 | 19 | -- 1.1 simple | 20 | CREATE TABLE dbl1( aa VARCHAR(1)); 21 | 22 | 23 | -- 1.2 recomendado | aplicar esquema donde va a quedar almacenados 24 | CREATE TABLE IF NOT EXISTS main.dbl1( aa VARCHAR(1)); 25 | 26 | 27 | -- 2. describir tabla 28 | 29 | -- 2.1 simple 30 | DESCRIBE dbl1; 31 | 32 | -- 2.2 recomendado 33 | DESCRIBE main.dbl1; 34 | 35 | 36 | -- 3. agregar comentarios tabla 37 | 38 | COMMENT ON TABLE main.dbl1 IS 'nuestra primera tabla'; 39 | 40 | -- 4. agregar comentarios tabla 41 | COMMENT ON COLUMN main.dbl1.aa IS 'mi primera columna'; 42 | 43 | 44 | -- 5. mirar comentarios de tablas 45 | SELECT * FROM duckdb_tables(); 46 | 47 | -- 6. mirar comentarios de columnas 48 | SELECT * FROM duckdb_columns(); -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/008.03102024/002.create.sql: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | 4 | ___ ___ ___ _ _____ ___ 5 | / __| _ \ __| /_\_ _| __| 6 | | (__| / _| / _ \| | | _| 7 | \___|_|_\___/_/ \_\_| |___| 8 | 9 | tablas. 10 | 11 | excelente practica, siempre agregar el esquema.objecto 12 | 13 | */ 14 | 15 | 16 | -- 1. simple | recomendación: esquema.tabla 17 | -- referencias: https://duckdb.org/docs/sql/statements/create_table.html 18 | 19 | -- 1.1 simple | 20 | CREATE TABLE dbl1( aa VARCHAR(1)); 21 | 22 | 23 | -- 1.2 recomendado | aplicar esquema donde va a quedar almacenados 24 | CREATE TABLE IF NOT EXISTS main.dbl1( aa VARCHAR(1)); 25 | 26 | 27 | -- 2. describir tabla 28 | 29 | -- 2.1 simple 30 | DESCRIBE dbl1; 31 | 32 | -- 2.2 recomendado 33 | DESCRIBE main.dbl1; 34 | 35 | 36 | -- 3. agregar comentarios tabla 37 | 38 | COMMENT ON TABLE main.dbl1 IS 'nuestra primera tabla'; 39 | 40 | -- 4. agregar comentarios tabla 41 | COMMENT ON COLUMN main.dbl1.aa IS 'mi primera columna'; 42 | 43 | 44 | -- 5. mirar comentarios de tablas 45 | SELECT * FROM duckdb_tables(); 46 | 47 | -- 6. mirar comentarios de columnas 48 | SELECT * FROM duckdb_columns(); 49 | 50 | 51 | 52 | -- 7. crear NULL y NOT NULL 53 | CREATE TABLE demo1.ejemplo_1_null( 54 | valor_vacio SMALLINT, -- null 55 | valor_vacio_2 VARCHAR(1) NULL, -- recomendado 56 | valor_no_vacio VARCHAR NOT NULL 57 | ); 58 | 59 | 60 | 61 | -- 8. valores default 62 | CREATE TABLE demo1.ejemplo_2_default( 63 | valor_vacio SMALLINT NULL DEFAULT 1, 64 | valor_no_vacio SMALLINT NOT NULL DEFAULT 90 65 | ); 66 | 67 | 68 | 69 | -- 9. valores checks 70 | CREATE TABLE demo1.ejemplo_3_check( 71 | --activo VARCHAR NULL CHECK (NOT contains(activo, ' ')) , -- conbinar con funciones | se verá en sección de DQL que es 72 | activo_no_vacio VARCHAR CHECK (activo_no_vacio IN ('S', 'N')) NOT NULL 73 | ); 74 | 75 | 76 | -- 8. valores unique 77 | CREATE TABLE demo1.ejemplo_4_unique( 78 | valor_no_vacio SMALLINT NOT NULL UNIQUE 79 | ); 80 | 81 | 82 | 83 | 84 | -- 8. valores PK 85 | 86 | -- 8.1 en columna 87 | CREATE TABLE demo1.ejemplo_5_pk( 88 | id_usuario INT NOT NULL PRIMARY KEY, 89 | nombre_usuario VARCHAR NOT NULL 90 | ); 91 | 92 | 93 | -- 8.2 al final 94 | CREATE TABLE demo1.ejemplo_6_pk( 95 | id_usuario INT NOT NULL, 96 | nombre_usuario VARCHAR NOT NULL, 97 | PRIMARY KEY (id_usuario) 98 | ); 99 | 100 | 101 | -- 8.3 compuesta 102 | CREATE TABLE demo1.ejemplo_7_pk( 103 | id_usuario INT NOT NULL, 104 | id_curso SMALLINT NOT NULL, 105 | PRIMARY KEY (id_usuario, id_curso) 106 | ); 107 | 108 | 109 | 110 | 111 | -- 9. valores FK 112 | 113 | 114 | -- tabla a relacionar 115 | CREATE TABLE demo1.tipo_documento( 116 | id_tipo_documento SMALLINT NOT NULL, 117 | nombre_documento VARCHAR NOT NULL, 118 | activo VARCHAR NOT NULL CHECK (activo IN ('S', 'N')), 119 | PRIMARY KEY (id_tipo_documento) 120 | ); 121 | 122 | 123 | -- 9.1 referencia | 1:N 124 | CREATE TABLE demo1.usuarios_fk_ejemplo( 125 | id_usuario INT NOT NULL PRIMARY KEY, 126 | nombre_usuario VARCHAR NOT NULL, 127 | id_tipo_documento SMALLINT NOT NULL REFERENCES demo1.tipo_documento(id_tipo_documento), 128 | ); 129 | 130 | -- 9.1 referencia | 1:1 131 | CREATE TABLE demo1.ejemplo_9_fk( 132 | id_usuario INT NOT NULL PRIMARY KEY REFERENCES demo1.usuarios_fk_ejemplo(id_usuario), 133 | nro_ingreso_sesion INT NOT NULL 134 | ); 135 | 136 | 137 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/008.03102024/003.alter.sql: -------------------------------------------------------------------------------- 1 | /* 2 | _ _ _____ ___ ___ 3 | /_\ | ||_ _| __| _ \ 4 | / _ \| |__| | | _|| / 5 | /_/ \_\____|_| |___|_|_\ 6 | 7 | tablas. 8 | 9 | excelente practica, siempre agregar el esquema.objecto 10 | referencias: https://duckdb.org/docs/sql/statements/alter_table.html 11 | 12 | */ 13 | 14 | -- creación de esquema y tabla para la prueba 15 | CREATE SCHEMA IF NOT EXISTS alteraciones; 16 | -- USE alteraciones 17 | 18 | CREATE TABLE IF NOT EXISTS alteraciones.prueba( aa VARCHAR(1)); 19 | 20 | -- solo ejecutar, se verá en detalle cuando veamos DML 21 | INSERT INTO alteraciones.prueba VALUES ('xyz'); 22 | 23 | 24 | -- ver resultados, se verá en detalle cuando veamos DML o DQLsz 25 | 26 | SELECT * FROM alteraciones.test 27 | -------------------------------------------------------------- 28 | 29 | 30 | -- 1. renombrar tabla 31 | 32 | ALTER TABLE alteraciones.prueba RENAME TO 'test'; 33 | 34 | 35 | -- 2. renombrar columna 36 | ALTER TABLE alteraciones.test RENAME aa TO coords; 37 | 38 | 39 | -- 2.1 agregar columna 40 | ALTER TABLE alteraciones.test ADD activo_null VARCHAR NULL; 41 | 42 | 43 | -- 2.2 agregar default 44 | ALTER TABLE alteraciones.test ADD activo_null2 VARCHAR NULL DEFAULT 'AEIOU'; 45 | 46 | 47 | -- 2.3 modificar default 48 | ALTER TABLE alteraciones.test ALTER activo_null2 SET DEFAULT 'UOIEA'; 49 | 50 | 51 | -- 2.4 eliminar default 52 | ALTER TABLE alteraciones.test ALTER activo_null2 DROP DEFAULT; 53 | 54 | 55 | -- 2.5 null default 56 | ALTER TABLE alteraciones.test ADD activo VARCHAR DEFAULT 'N'; 57 | 58 | 59 | -- 2.6 pasar a not null 60 | ALTER TABLE alteraciones.test ALTER COLUMN activo SET NOT NULL; -- column es opcional | redundante 61 | 62 | 63 | -- 2.6.1 pasar de not null a null 64 | ALTER TABLE alteraciones.test ALTER activo DROP NOT NULL; 65 | 66 | -- 2.7 pasar a otro tipo dde datos 67 | ALTER TABLE alteraciones.test ALTER activo_null TYPE DATE; 68 | 69 | 70 | -- 2.8 eliminar columna 71 | ALTER TABLE alteraciones.test DROP activo_null2; 72 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/008.03102024/004.drop.sql: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | 4 | ___ ___ ___ ___ 5 | | \| _ \/ _ \| _ \ 6 | | |) | / (_) | _/ 7 | |___/|_|_\\___/|_| 8 | 9 | 10 | tablas. 11 | 12 | excelente practica, siempre agregar el esquema.objecto 13 | referencias: https://duckdb.org/docs/sql/statements/drop.html 14 | 15 | */ 16 | 17 | -- creación de esquema y tabla para la prueba 18 | CREATE SCHEMA IF NOT EXISTS eliminaciones; 19 | -- USE eliminaciones 20 | 21 | CREATE TABLE IF NOT EXISTS eliminaciones.relacion( id SMALLINT PRIMARY KEY); 22 | CREATE TABLE IF NOT EXISTS eliminaciones.relacionado( id SMALLINT NOT NULL PRIMARY KEY REFERENCES eliminaciones.relacion(id)); 23 | 24 | 25 | -- 1. eliminar tabla 26 | DROP TABLE eliminaciones.relacion; 27 | 28 | 29 | 30 | -- 2. eliminación jerárquica 31 | CREATE TABLE IF NOT EXISTS eliminaciones.relacion( id SMALLINT NOT NULL PRIMARY KEY); 32 | CREATE TABLE IF NOT EXISTS eliminaciones.relacionado( id SMALLINT NOT NULL PRIMARY KEY REFERENCES eliminaciones.relacion(id)); 33 | 34 | 35 | DROP TABLE eliminaciones.relacion; -- generara error 36 | 37 | /* 38 | PASOS: 39 | 1. eliminar las tablas relacionadas primero: DROP TABLE eliminaciones.relacionado; 40 | 2. eliminar la relacion : DROP TABLE eliminaciones.relacion; 41 | */ 42 | 43 | -- 3. eliminación esquema 44 | 45 | --3.1 tambien es eliminación jerárquica, se debe eliminar todos los objetos y por ultimo el esquema 46 | DROP SCHEMA eliminaciones; 47 | 48 | 49 | --3.2 cascade ( eliminar jerárquias auto) 50 | DROP SCHEMA eliminaciones CASCADE; -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/009.08102024/001.insert.sql: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | ___ _ _ ___ ___ ___ _____ 4 | |_ _| \| / __| __| _ \_ _| 5 | | || .` \__ \ _|| / | | 6 | |___|_|\_|___/___|_|_\ |_| 7 | 8 | tablas. 9 | excelente practica, siempre agregar el esquema.objecto 10 | 11 | referencias: https://duckdb.org/docs/sql/statements/insert.html 12 | */ 13 | 14 | -- crear el esquema 15 | CREATE SCHEMA IF NOT EXISTS dml; 16 | 17 | -- crear tablas 18 | CREATE TABLE IF NOT EXISTS dml.test_inserts( 19 | id_tipo SMALLINT NOT NULL PRIMARY KEY, 20 | descripcion VARCHAR NOT NULL, 21 | alias VARCHAR NULL, 22 | alien BOOLEAN, 23 | activo VARCHAR NOT NULL DEFAULT 'S' 24 | ); 25 | 26 | - describir como esta la tabla 27 | DESCRIBE dml.test_inserts; 28 | 29 | -- validar resultados 30 | SELECT * FROM dml.test_inserts 31 | 32 | -- forma insert # 1 | todas las columnas | redundante 33 | -- indicar las columnas que se van a insertar 34 | INSERT INTO dml.test_inserts( 35 | id_tipo, 36 | descripcion, 37 | alias, 38 | alien, 39 | activo 40 | ) VALUES ( 41 | 1, 42 | 'PRIMER INSERT', 43 | 'PI', 44 | false, 45 | 'S' 46 | ); 47 | 48 | -- forma insert # 2 | todas las columnas | recomendada 49 | INSERT INTO dml.test_inserts VALUES (2,'PRIMER INSERT','PI',false,'S'); 50 | 51 | 52 | -- forma para evitar que generer errores de PK o unique 53 | INSERT OR IGNORE INTO dml.test_inserts VALUES (2,'PRIMER INSERT','PI',false,'S'); 54 | 55 | -- forma para evitar que generer errores de PK y remplazar valor 56 | INSERT OR REPLACE INTO dml.test_inserts VALUES (2,'SEGUNDO INSERT REMPLAZADO','PI',false,'S'); 57 | 58 | 59 | -- forma insert # 3 | insert parcial | orden 60 | INSERT INTO dml.test_inserts(id_tipo, descripcion) VALUES (3, 'TERCERO'); 61 | 62 | 63 | -- forma insert # 4 | insert parcial | desorden 64 | INSERT INTO dml.test_inserts(descripcion ,id_tipo ) VALUES ('DESORDEN', 4); 65 | 66 | -- generara error 67 | INSERT INTO dml.test_inserts(id_tipo) VALUES (5); 68 | 69 | -- insertar multiples valores | total o parcial | ordinario | no recomendado 70 | INSERT INTO dml.test_inserts VALUES (5,'VARIOS FORMA #1.1','VFO',TRUE,'N'); 71 | INSERT INTO dml.test_inserts VALUES (6,'VARIOS FORMA #1.2','VFO',TRUE,'N'); 72 | INSERT INTO dml.test_inserts VALUES (7,'VARIOS FORMA #1.3','VFO',TRUE,'N'); 73 | 74 | -- insertar multiples valores | total o parcial | eficiente | recomendado 75 | INSERT INTO dml.test_inserts VALUES 76 | (8,'VARIOS FORMA #2.1','VFO',TRUE,'N'), 77 | (9,'VARIOS FORMA #2.2','VFO',TRUE,'N'), 78 | (10,'VARIOS FORMA #2.3','VFO',TRUE,'N'); 79 | 80 | 81 | -- insert basico - intermedio 82 | 83 | CREATE TABLE IF NOT EXISTS dml.tmp_test_insert_select( 84 | id_tipo_xyz SMALLINT NOT NULL PRIMARY KEY, 85 | descripcion_anonima VARCHAR NOT NULL, 86 | activo_prueba VARCHAR NOT NULL 87 | ); 88 | 89 | INSERT INTO dml.tmp_test_insert_select 90 | SELECT id_tipo, 91 | descripcion, 92 | activo 93 | FROM dml.test_inserts; 94 | 95 | SELECT * FROM dml.tmp_test_insert_select 96 | 97 | 98 | -- insert basico - intermedio 99 | CREATE TABLE dml.tmp_test_insert_create2 AS 100 | SELECT activo, 101 | descripcion, 102 | id_tipo, 103 | FLOOR(random() * 1000) + 1 salario -- campo aleatorío 104 | FROM dml.test_inserts; -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/009.08102024/002.update.sql: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | 4 | _ _ ___ ___ _ _____ ___ 5 | | | | | _ \ \ /_\_ _| __| 6 | | |_| | _/ |) / _ \| | | _| 7 | \___/|_| |___/_/ \_\_| |___| 8 | 9 | 10 | tablas. 11 | excelente practica, siempre agregar el esquema.objecto 12 | 13 | referencias: https://duckdb.org/docs/sql/statements/update.html 14 | 15 | OPERADORES TRANSVERSALES (a excepción de SET) 16 | 17 | 18 | =: Compara si dos valores son iguales. 19 | Ejemplo: salario = 3000 selecciona empleados cuyo salario es exactamente 3000. 20 | 21 | >: Compara si un valor es mayor que otro. 22 | Ejemplo: edad > 30 selecciona empleados mayores de 30 años. 23 | 24 | <: Compara si un valor es menor que otro. 25 | Ejemplo: edad < 30 selecciona empleados menores de 30 años. 26 | 27 | >=: Compara si un valor es mayor o igual que otro. 28 | Ejemplo: salario >= 4000 selecciona empleados cuyo salario es 4000 o más. 29 | 30 | <=: Compara si un valor es menor o igual que otro. 31 | Ejemplo: salario <= 4000 selecciona empleados cuyo salario es 4000 o menos. 32 | 33 | != o <>: Compara si dos valores son diferentes. 34 | Ejemplo: salario != 3000 o salario <> 3000 selecciona empleados cuyo salario no es 3000. 35 | 36 | WHERE: Filtra registros según una condición específica. 37 | Ejemplo: WHERE edad > 30 selecciona empleados mayores de 30 años. 38 | 39 | IN: Verifica si un valor está dentro de una lista de valores. 40 | Ejemplo: departamento IN ('Ventas', 'Marketing') selecciona empleados que están en los departamentos de Ventas o Marketing. 41 | 42 | 43 | AND: Combina varias condiciones; todas deben ser verdaderas. 44 | Ejemplo: WHERE edad > 30 AND salario > 3000 selecciona empleados mayores de 30 años y con salario mayor a 3000. 45 | 46 | IS: Se usa para comparar con NULL. 47 | Ejemplo: direccion IS NULL selecciona empleados sin dirección registrada. 48 | 49 | IS NOT: Verifica si un valor no es NULL. 50 | Ejemplo: direccion IS NOT NULL selecciona empleados que tienen una dirección registrada. 51 | 52 | EXISTS: Verifica si una subconsulta devuelve al menos un registro. (se verá en DQL) 53 | Ejemplo: EXISTS (SELECT 1 FROM empleados WHERE salario > 5000) devuelve verdadero si hay al menos un empleado con un salario mayor a 5000. 54 | 55 | BETWEEN: Verifica si un valor está dentro de un rango específico. 56 | Ejemplo: salario BETWEEN 3000 AND 5000 selecciona empleados cuyo salario está entre 3000 y 5000, inclusive. 57 | 58 | LIKE: Se utiliza para buscar un patrón en una columna de texto. 59 | Ejemplo: nombre LIKE 'A%' selecciona empleados cuyos nombres comienzan con la letra 'A'. 60 | 61 | 62 | SET: Se usa para actualizar valores en una tabla. 63 | Ejemplo: SET salario = 5000 actualiza el salario de los empleados a 5000. 64 | 65 | 66 | ORDER JERARQUÍA UPDATE 67 | 68 | UPDATE esquema.tabla_principal 69 | SET columna1 = valor1, columna2 = valor2 70 | JOIN otra_tabla ON tabla_principal.columna_clave = otra_tabla.columna_clave | se verá en DQL 71 | WHERE condicion1 | siempre debe tener WHERE | SIEMPRE!!!!!!!! 72 | AND condicion2; 73 | 74 | */ 75 | 76 | 77 | -- eliminar objeto 78 | DROP TABLE dml.tmp_test_insert_create; 79 | 80 | -- recrear 81 | CREATE TABLE dml.tmp_test_insert_create AS 82 | SELECT activo, 83 | descripcion, 84 | id_tipo, 85 | FLOOR(random() * 1000) + 1 salario -- campo aleatorío | DQL 86 | FROM dml.test_inserts; 87 | 88 | -- ver estado actual de los datos 89 | SELECT * FROM dml.tmp_test_insert_create; 90 | 91 | -- MALA PRÁCTICA | EL PEOR ERROR DEL MUNDO 92 | UPDATE dml.tmp_test_insert_create 93 | SET activo = 'N', salario=0 94 | ; 95 | 96 | 97 | 98 | 99 | -- simple filtro 100 | UPDATE dml.tmp_test_insert_create 101 | SET activo = 'B' 102 | WHERE salario > 900; 103 | 104 | SELECT * FROM dml.tmp_test_insert_create; 105 | 106 | 107 | -- múltiple filtro 108 | 109 | UPDATE dml.tmp_test_insert_create 110 | SET activo = 'C' 111 | WHERE salario <= 90 AND 112 | activo = 'S'; 113 | 114 | SELECT * FROM dml.tmp_test_insert_create; 115 | 116 | 117 | -- between 118 | 119 | UPDATE dml.tmp_test_insert_create 120 | SET activo = 'F' 121 | WHERE id_tipo BETWEEN 7 AND 9; 122 | 123 | -- in 124 | UPDATE dml.tmp_test_insert_create 125 | SET activo = 'Z' 126 | WHERE id_tipo IN (4, 6); 127 | 128 | SELECT * FROM dml.tmp_test_insert_create; 129 | 130 | 131 | -- update con operaciones 132 | -- mirar https://www.todamateria.com/jerarquia-de-operaciones/ 133 | UPDATE dml.tmp_test_insert_create 134 | SET salario = (salario * 0.3) + salario -- incluso subqueries 135 | WHERE activo != 'N'; 136 | 137 | SELECT * FROM dml.tmp_test_insert_create; 138 | 139 | 140 | -- filtros con NULL 141 | SELECT * FROM dml.test_inserts; 142 | 143 | UPDATE dml.test_inserts 144 | SET alien = TRUE 145 | WHERE alien IS NULL; 146 | 147 | 148 | -- filtros con NOT NULL 149 | SELECT * FROM dml.test_inserts; 150 | 151 | UPDATE dml.test_inserts 152 | SET alias = 'NN', activo = 'B' 153 | WHERE alien IS NOT NULL; -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/009.08102024/003.delete.sql: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | 4 | ___ ___ _ ___ _____ ___ 5 | | \| __| | | __|_ _| __| 6 | | |) | _|| |__| _| | | | _| 7 | |___/|___|____|___| |_| |___| 8 | 9 | tablas. 10 | excelente practica, siempre agregar el esquema.objecto 11 | 12 | referencias: https://duckdb.org/docs/sql/statements/delete.html 13 | 14 | 15 | FROM: Especifica la tabla de la que se seleccionarán o eliminarán los registros. 16 | Ejemplo: FROM empleados indica que la operación se realizará sobre la tabla de empleados. 17 | 18 | 19 | ORDER JERARQUÍA DELETE 20 | 21 | DELETE FROM tabla_principal 22 | JOIN otra_tabla ON tabla_principal.columna_clave = otra_tabla.columna_clave | se verá en DQL 23 | WHERE condicion1 24 | AND condicion2; 25 | */ 26 | 27 | SELECT * FROM dml.test_inserts; 28 | 29 | 30 | 31 | -- MALA PRÁCTICA | EL PEOR ERROR DEL MUNDO 32 | DELETE FROM dml.test_inserts; 33 | 34 | SELECT * FROM dml.test_inserts; 35 | 36 | 37 | -- datos de prueba 38 | SELECT * FROM dml.tmp_test_insert_create; 39 | 40 | 41 | DELETE FROM dml.tmp_test_insert_create 42 | WHERE id_tipo BETWEEN 7 AND 10 AND 43 | activo = 'F'; 44 | 45 | SELECT * FROM dml.tmp_test_insert_create; -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/009.08102024/004.truncate.sql: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | 4 | _____ ___ _ _ _ _ ___ _ _____ ___ 5 | |_ _| _ \ | | | \| |/ __| /_\_ _| __| 6 | | | | / |_| | .` | (__ / _ \| | | _| 7 | |_| |_|_\\___/|_|\_|\___/_/ \_\_| |___| 8 | 9 | 10 | tablas. 11 | excelente practica, siempre agregar el esquema.objecto 12 | 13 | referencias: https://duckdb.org/docs/sql/statements/delete.html 14 | 15 | TRUNCATE: Elimina todas las filas de una tabla de manera rápida y no registra la eliminación de cada fila, 16 | por lo que no se puede usar una cláusula WHERE. No puede ser revertido si se ejecuta en una transacción. 17 | 18 | registra la eliminación de cada fila: cuando se eliminan, datos se pueden recuperar en bases de datos como oracle, 19 | pero truncate elimina esa posibilidad. 20 | 21 | DELETE: Elimina filas específicas según una condición definida en la cláusula WHERE. Cada eliminación se registra, 22 | por lo que se puede revertir en una transacción. 23 | 24 | 25 | */ 26 | 27 | TRUNCATE dml.tmp_test_insert_create; 28 | 29 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/010.10102024/001.transversal.sql: -------------------------------------------------------------------------------- 1 | /* 2 | ___ ___ _ 3 | | \ / _ \| | 4 | | |) | (_) | |__ 5 | |___/ \__\_\____| 6 | 7 | Orden jerárquico de evaluación de una consulta SELECT en SQL: 8 | 9 | (*) SELECT - Se seleccionan las columnas o expresiones que se mostrarán. 10 | 1. FROM - Se especifican las tablas de las cuales se obtendrán los datos. 11 | 2. JOIN - Se realizan las uniones entre tablas si es necesario. 12 | 3. WHERE - Se filtran los registros antes de cualquier agrupación. 13 | 4. GROUP BY - Se agrupan los resultados por uno o más campos. 14 | 5. HAVING - Se filtran los grupos generados por el GROUP BY. 15 | 6. SELECT - Se seleccionan las columnas o expresiones que se mostrarán. 16 | 7. ORDER BY - Se ordenan los resultados finales. 17 | 8. LIMIT - Se limita la cantidad de filas que serán devueltas. 18 | 19 | Notas: 20 | 21 | 1. Aunque el SELECT aparece primero en la sintaxis de la consulta, 22 | es evaluado después de las cláusulas FROM, JOIN, WHERE, GROUP BY, y HAVING. 23 | por eso queda en el nivel 6 24 | 25 | 2. (*) obligatorio 26 | 27 | 28 | CONCEPTOS ELEMENTALES: 29 | 30 | Valor hardcodeado (hardcoded): es un dato que se inserta directamente en el código 31 | fuente en lugar de obtenerse dinámicamente 32 | 33 | Casteo (o casting): es el proceso de convertir un valor de un tipo de dato a otro 34 | de manera explícita. 35 | 36 | Textos en base de datos se delimitan con comillas sencillas, eje 'mi texto' 37 | 38 | REFERENCIAS: 39 | tipos de datos: https://duckdb.org/docs/sql/data_types/overview.html 40 | select : https://duckdb.org/docs/sql/statements/select.html 41 | tipos simples : https://github.com/codingupmyfuture/bootcampduckdb/blob/main/contenido.curso/002.documentos/005.tipos.datos.simples.pdf 42 | tipos complex : https://github.com/codingupmyfuture/bootcampduckdb/blob/main/contenido.curso/002.documentos/006.tipos.datos.complejos.pdf 43 | 44 | */ 45 | 46 | -- 1. valor arcodeado | 47 | -- 1.1 simmple 48 | SELECT 12345 49 | 50 | -- 1.1 multiple 51 | SELECT 12345, 'mi texto' 52 | 53 | 54 | 55 | --2. alias 56 | --2.1 AS 57 | SELECT 12345 AS mi_valor, 'mi texto' AS texto_prueba; 58 | 59 | 60 | --2.2 sin AS 61 | SELECT 12345 mi_valor, 'mi texto' texto_prueba; 62 | 63 | 64 | -- 3. DESCRIBE SELECT .. 65 | DESCRIBE SELECT 12345 mi_valor, 'mi texto' texto_prueba; 66 | 67 | 68 | -- 4. CASTEO 69 | /* 70 | Operaciones básicas en SQL: 71 | 72 | - Suma: + 73 | Ejemplo: SELECT 5 + 3; -- Resultado: 8 74 | 75 | - Resta: - 76 | Ejemplo: SELECT 10 - 4; -- Resultado: 6 77 | 78 | - Multiplicación: * 79 | Ejemplo: SELECT 7 * 2; -- Resultado: 14 80 | 81 | - División: / 82 | Ejemplo: SELECT 20 / 5; -- Resultado: 4 83 | */ 84 | 85 | 86 | SELECT 5 * 5 multiplicacion; 87 | 88 | SELECT '5' * 5 interpretaciones; 89 | 90 | SELECT '5' * '5' error; -- error por que texto por texto no puede ejecutarse 91 | 92 | 93 | -- FORMAS DE CASTEAR 94 | SELECT 95 | INT'5' * INT'5' casteo_1, 96 | CAST('5' AS INT) * CAST('5' AS INT) casteo_2, 97 | '5'::INT * '5'::INT casteo_3; 98 | 99 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/010.10102024/002.textos.sql: -------------------------------------------------------------------------------- 1 | --TYPE: texto 2 | -- referencia: https://duckdb.org/docs/sql/functions/char.html 3 | -- valor: DeMo@SofTSeRvEiNc.CoM o MiMAMAmemima@gmail.com 4 | 5 | CREATE TABLE test (email VARCHAR NOT NULL); 6 | INSERT INTO test VALUES ('DeMo@SofTSeRvEiNc.CoM'), ('MiMAMAmemima@gmail.com'); 7 | -- PARA PROBAR : SELECT FUNCION(ATRIBUTO) FROM test; 8 | 9 | 10 | 11 | 12 | SELECT 'DeMo@SofTSeRvEiNc.CoM' email 13 | 14 | 15 | -- mins. 16 | SELECT LOWER('DeMo@SofTSeRvEiNc.CoM') email 17 | 18 | -- mays. 19 | SELECT UPPER('DeMo@SofTSeRvEiNc.CoM') email 20 | 21 | 22 | -- longitud. 23 | SELECT LENGTH ('DeMo@SofTSeRvEiNc.CoM') email 24 | 25 | 26 | -- concatenar | A 27 | SELECT 'DeMo@SofTSeRvEiNc.CoM' || '-' || '********' email 28 | 29 | -- concatenar | B 30 | SELECT CONCAT('DeMo@SofTSeRvEiNc.CoM', '-', '********') email 31 | 32 | 33 | -- concatenar | c 34 | SELECT CONCAT_WS('[-]', 'DeMo@SofTSeRvEiNc.CoM', '-', '********') email 35 | 36 | -- trim 37 | SELECT ' DeMo@SofTSeRvEiNc.CoM ' email 38 | SELECT TRIM(' DeMo@SofTSeRvEiNc.CoM ') email 39 | 40 | 41 | -- reverse 42 | SELECT REVERSE('DeMo@SofTSeRvEiNc.CoM') email 43 | 44 | -- concatenación de operaciones 45 | SELECT LOWER(REVERSE('DeMo@SofTSeRvEiNc.CoM')) email 46 | 47 | 48 | -- replace 49 | SELECT REPLACE('DeMo@SofTSeRvEiNc.COM', 'o', '+') email 50 | 51 | -- mejor practica 52 | SELECT REPLACE(LOWER('DeMo@SofTSeRvEiNc.COM'), 'o', '+') email 53 | 54 | 55 | -- repetir varias veces el mismo texto 56 | SELECT REPEAT('DeMo@SofTSeRvEiNc.CoM', 2) AS email; 57 | 58 | -- validar si una parte del texto esta dentro del atributo 59 | SELECT CONTAINS('c:/ruta/archivo/bootcamp.pdf', 'ruta') ruta 60 | 61 | -- validar si el archivo termina en un valor determinado 62 | SELECT ENDS_WITH('c:/ruta/archivo/bootcamp.pdf', 'pdf') ruta 63 | SELECT ENDS_WITH('c:/ruta/archivo/bootcamp.pdf', 'csv') ruta 64 | 65 | -- convertir a base 64 66 | SELECT BASE64('DeMo@SofTSeRvEiNc.CoM') encriptacion_basica 67 | 68 | -- base 64 a texto 69 | SELECT FROM_BASE64('RGVNb0BTb2ZUU2VSdkVpTmMuQ29N')::VARCHAR desencriptacion_basica 70 | 71 | -- desencriptacion_md5 72 | SELECT MD5('DeMo@SofTSeRvEiNc.CoM') encriptacion_media 73 | 74 | -- idetificar 75 | SELECT HASH('DeMo@SofTSeRvEiNc.CoM', 1) encriptacion_media 76 | 77 | 78 | /* 79 | Un slice es una técnica que permite extraer una subsección de un texto, 80 | Usa la notación [start:end], donde: 81 | 82 | start: es el índice desde donde comienza el slice. 83 | end: es el índice donde termina el slice. 84 | 85 | 86 | HOLA 87 | [H | O | L | A] -- ver texto como un vector 88 | [1 | 2 | 3 | 4] -- postivo 89 | [-4 | -3 | -2 | -1] -- negativa 90 | 91 | */ 92 | 93 | -- tomando posición del index 94 | SELECT 'HOLA'[1] indice 95 | 96 | 97 | -- tomando rango cerrado 98 | SELECT 'HOLA'[1:3] rango_cerrado 99 | 100 | -- tomando rango abierto final 101 | SELECT 'HOLA'[2:] rango_abierto 102 | 103 | 104 | -- tomando rango abierto inicial 105 | SELECT 'HOLA'[:3] rango_abierto 106 | 107 | -- tomando indice negativo 108 | SELECT 'HOLA'[-2] indice_negativo 109 | 110 | 111 | -- rangos negativos 112 | SELECT 'HOLA'[-2:] rango_negativo -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/010.10102024/003.numeros.sql: -------------------------------------------------------------------------------- 1 | -- USAR DESCRIBE SELECT para validar 2 | 3 | 4 | -- bigint 5 | SELECT 9223372036854775807 AS num_bigint_positivo, 6 | -9223372036854775807 num_bigint_negativo; 7 | 8 | 9 | 10 | -- numeric 11 | SELECT 999999999999999.999 AS num_numeric_positivo, 12 | -999999999999999.999 num_numeric_negativo; 13 | 14 | 15 | -- float 16 | SELECT 1.7976931348623157E308 AS num_float_positivo, 17 | -1.7976931348623157E308 num_float_negativo; 18 | 19 | 20 | -- integer 21 | SELECT 2147483647 AS num_integer_positivo, 22 | -2147483647 num_integer_negativo; 23 | 24 | 25 | -- smallint 26 | SELECT 32767 AS num_smallint_positivo, 27 | -32767 num_smallint_negativo; 28 | 29 | -- tinyint 30 | SELECT 127 AS num_tinyint_positivo, 31 | -127 num_tinyint_negativo; 32 | 33 | --hugeint 34 | SELECT 170141183460469231731687303715884105727 AS num_hugeint_positivo, 35 | -170141183460469231731687303715884105727 num_hugeint_negativo; 36 | 37 | 38 | -- booleanos 39 | SELECT TRUE verdadero, 40 | FALSE falso; 41 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/010.10102024/004.fechas.sql: -------------------------------------------------------------------------------- 1 | -- TYPE: datetimes 2 | -- referencias: https://duckdb.org/docs/sql/functions/timestamp.html 3 | /* 4 | 5 | %a Nombre local abreviado de día de semana 6 | %A Nombre local completo de día de semana 7 | %b Nombre local abreviado de mes 8 | %B Nombre local completo de mes 9 | %c Representación local de fecha y hora 10 | %d Día de mes [01,31] 11 | %H Hora (horario 24 horas) [00,23] 12 | %I Hora (horario 12 horas) [01,12] 13 | %j Número de día del año [001,366] 14 | %m Mes [01,12] 15 | %M Minuto [00,59] 16 | %S Segundo 17 | %U Nº semana del año. Se considera al Domingo como primer día de semana [00,53] 18 | %w Establece el primer día de semana [0(Domingo),1(Lunes)... 6]. 19 | %W Nº semana del año (Se considera al Lunes como primer día de semana) [00,53] 20 | %x Fecha local 21 | %X Hora local 22 | %y Año en formato corto [00,99] 23 | %Y Año en formato largo 24 | %Z Nombre de Zona Horaria 25 | */ 26 | 27 | -- por defecto, el formato de fechas es %Y-%m-%d, eje: 2024-10-01 28 | 29 | 30 | -- fechas 31 | SELECT '2024-10-01'::DATE solo_fecha, 32 | '2024-10-01 15:30:00'::TIMESTAMP fecha_hora, 33 | '15:30:00'::TIME solo_hora 34 | 35 | 36 | -- sumar días, años o meses 37 | -- aumentar días | forma #1 38 | SELECT '2024-10-01'::DATE + 5 fecha_hora 39 | 40 | -- aumentar días | forma #1 41 | SELECT '2024-10-01'::DATE + INTERVAL 5 DAY resultado 42 | 43 | -- aumentar meses 44 | SELECT '2024-10-01'::DATE + INTERVAL 5 MONTH resultado 45 | -- aumentar años 46 | SELECT '2024-10-01'::DATE + INTERVAL 5 YEAR resultado 47 | 48 | -- Nota: con intervar puedes usar más o menos para reducir tiempo 49 | SELECT '2024-10-01'::DATE - INTERVAL 5 YEAR resultado 50 | 51 | -- devuelve la fecha actual (al inicio de la transacción actual) 52 | SELECT current_date resultado; 53 | 54 | -- convierte una fecha a una cadena según el formato especificado 55 | SELECT strftime('2024-10-01'::DATE, '%d/%m/%Y') resultado; 56 | 57 | 58 | -- suma el intervalo a la fecha dada 59 | SELECT date_add('2024-10-01'::DATE, INTERVAL 5 DAY) resultado; 60 | 61 | -- devuelve el número de límites de partición entre las dos fechas dadas 62 | SELECT date_diff('day', '2024-10-01'::DATE, '2024-10-10'::DATE) resultado; 63 | 64 | -- obtiene la subparte de la fecha especificada (equivalente a extract) 65 | SELECT date_part('month', '2024-10-01'::DATE) resultado; 66 | 67 | -- trunca la fecha a la precisión especificada 68 | SELECT date_trunc('month', '2024-10-15'::DATE) resultado; 69 | 70 | 71 | -- alias de date_trunc para truncar la fecha a la precisión especificada 72 | SELECT datetrunc('year', '2024-10-15'::DATE) resultado; 73 | 74 | -- devuelve el nombre (en inglés) del día de la semana para la fecha dada 75 | SELECT dayname('2024-10-01'::DATE) resultado; 76 | 77 | -- extrae una subparte de la fecha especificada 78 | SELECT extract(month FROM '2024-10-01'::DATE) resultado; 79 | 80 | -- devuelve la última de las dos fechas dadas 81 | SELECT greatest('2024-10-01'::DATE, '2024-09-15'::DATE) resultado; 82 | 83 | -- devuelve verdadero si la fecha es finita, falso si no lo es 84 | SELECT isfinite('2024-10-01'::DATE) resultado; 85 | 86 | -- devuelve verdadero si la fecha es infinita, falso si no lo es 87 | SELECT isinf('2024-10-01'::DATE) resultado; 88 | 89 | -- devuelve el último día del mes correspondiente a la fecha dada 90 | SELECT last_day('2024-10-01'::DATE) resultado; 91 | 92 | -- devuelve la primera de las dos fechas dadas 93 | SELECT least('2024-10-01'::DATE, '2024-09-15'::DATE) resultado; 94 | 95 | -- crea una fecha a partir de las partes dadas 96 | SELECT make_date(2024, 10, 1) resultado; 97 | 98 | -- devuelve el nombre (en inglés) del mes para la fecha dada 99 | SELECT monthname('2024-10-01'::DATE) resultado; 100 | 101 | -- devuelve la fecha actual (al inicio de la transacción actual) 102 | SELECT today() resultado; 103 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/011.15102024/005.blobs.sql: -------------------------------------------------------------------------------- 1 | --TYPE: texto 2 | -- referencia: https://duckdb.org/docs/sql/functions/blob.html 3 | 4 | /* 5 | Un BLOB (Binary Large Object) es un tipo de dato que se usa para almacenar 6 | archivos grandes o datos en una base de datos, como imágenes, videos, 7 | documentos, y otros tipos de archivos. En lugar de guardar el archivo en el disco de la computadora, 8 | se guarda directamente en la base de datos para que esté todo en un solo lugar y se pueda acceder a él fácilmente. 9 | 10 | */ 11 | 12 | SELECT '\xAA\xAB\xAC'::BLOB resultado; -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/011.15102024/006.array.sql: -------------------------------------------------------------------------------- 1 | --TYPE: array 2 | -- referencia: https://duckdb.org/docs/sql/data_types/array 3 | 4 | /* 5 | Una lista de elementos que siempre tiene el mismo número de valores del mismo tipo. 6 | */ 7 | 8 | --Notas : insertar [valor1, valor2, valorN] 9 | -- atributo[index] al consultar 10 | 11 | -- definir lista 12 | SELECT array_value(7, 8, 9) resultados; 13 | 14 | 15 | -- obtejer el valor de la lista 16 | SELECT array_value(1, 2, 3)[2] resultados; 17 | 18 | 19 | -- obtejer el valor de la lista 20 | SELECT array_value(1, 2, 3)[-1] resultados; 21 | 22 | -- anidar 23 | SELECT array_value( 24 | array_value(1, 2), 25 | array_value(3, 4), 26 | array_value(5, 6) 27 | ); 28 | 29 | -- pueden almacenar structs 30 | SELECT array_value({'a': 1, 'b': 2}, {'a': 3, 'b': 4}) resultado; -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/011.15102024/007.list.sql: -------------------------------------------------------------------------------- 1 | --TYPE: list 2 | -- referencia: https://duckdb.org/docs/sql/data_types/list 3 | -- https://duckdb.org/docs/sql/expressions/logical_operators.html 4 | 5 | /* 6 | Una lista de elementos que puede tener cualquier cantidad de valores del mismo tipo. 7 | */ 8 | 9 | --Notas : insertar [valor1, valor2, valorN] 10 | -- atributo[index] al consultar 11 | 12 | -- definir lista 13 | SELECT list_value(7, 8, 9) resultados; 14 | 15 | 16 | -- obtejer el valor de la lista 17 | 18 | -- ejemplo una sola fila 19 | SELECT [1 , 2, NULL, 3] resultado; 20 | 21 | -- multiples - se vera mas adelante que es UNION 22 | SELECT [1 , 2, NULL, 3] resultado 23 | UNION 24 | SELECT [5,6] resultado; 25 | 26 | -- tipo texto 27 | SELECT ['softserve', 'bootcamp' ] resultado; 28 | 29 | 30 | -- aninadas 31 | SELECT [[1,2], [3,4], [5,6]] resultado; 32 | 33 | 34 | -- selecciona el tercer elemento de la lista 35 | SELECT (['a', 'b', 'c'])[3] resultado; 36 | 37 | -- selecciona el último elemento de la lista usando un índice negativo 38 | SELECT (['a', 'b', 'c'])[-1] resultado; 39 | 40 | -- selecciona el tercer elemento de la lista utilizando una expresión matemática para el índice 41 | SELECT (['a', 'b', 'c'])[2 + 1] resultado; 42 | 43 | -- extrae el tercer elemento de la lista usando la función list_extract 44 | SELECT list_extract(['a', 'b', 'c'], 3) resultado; 45 | 46 | -- selecciona una porción de la lista desde el primer elemento hasta el segundo 47 | SELECT (['a', 'b', 'c'])[1:2] resultado; 48 | 49 | -- selecciona una porción de la lista desde el inicio hasta el segundo elemento 50 | SELECT (['a', 'b', 'c'])[:2] resultado; 51 | 52 | -- selecciona una porción de la lista desde el penúltimo elemento hasta el final 53 | SELECT (['a', 'b', 'c'])[-2:] resultado; 54 | 55 | -- extrae una porción de la lista desde el segundo elemento hasta el tercero usando la función list_slice 56 | SELECT list_slice(['a', 'b', 'c'], 2, 3) resultado; 57 | 58 | -- compara si dos listas son iguales 59 | SELECT [1, 2] = [1, 3] resultado; 60 | 61 | 62 | -- compara si la primera lista es mayor que la segunda 63 | SELECT [1, 2] > [1, 3] resultado; 64 | 65 | -- compara si la primera lista es menor que la segunda 66 | SELECT [1, 2] < [1, 3] resultado; 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/011.15102024/008.map.sql: -------------------------------------------------------------------------------- 1 | --TYPE: map 2 | -- referencia: https://duckdb.org/docs/sql/data_types/map 3 | -- https://duckdb.org/docs/sql/expressions/logical_operators.html 4 | -- obtener la longitud 5 | -- definir map 6 | SELECT MAP { 7 | 'nombre': 'bootcamp', 8 | 'empresa': 'softserve', 9 | 'edad_profe': '19' 10 | } resultado; 11 | 12 | 13 | -- obtener valor por indice 14 | SELECT MAP { 15 | 'nombre': 'bootcamp', 16 | 'empresa': 'softserve', 17 | 'edad_profe': '19' 18 | } resultado; 19 | 20 | -- mandando lista de columnas y valores por separado 21 | SELECT MAP( 22 | ['nombre', 'empresa', 'edad_profe'], 23 | ['bootcamp', 'softserve', '19'] 24 | ) resultado; 25 | 26 | -- usando función 27 | SELECT map_from_entries( 28 | [ 29 | ('nombre', 'bootcamp'), 30 | ('empresa', 'softserve'), 31 | ('edad_profe', '19') 32 | ] 33 | ) resultado; 34 | 35 | 36 | -- obtener losd datos 37 | 38 | SELECT MAP { 39 | 'nombre': 'bootcamp', 40 | 'empresa': 'softserve', 41 | 'edad_profe': '19' 42 | }['empresa'] resultado; 43 | 44 | -- definir listas [latitud, longitud] 45 | SELECT MAP { 46 | 'udea': [6.267264001455956, -75.56917754648963], 47 | 'unal': [6.260911508487612, -75.5795386134807] 48 | } resultado 49 | 50 | 51 | -- obtener la longitud 52 | SELECT MAP { 53 | 'udea': [6.267264001455956, -75.56917754648963], 54 | 'unal': [6.260911508487612, -75.5795386134807] 55 | }['udea'][1][1] resultado 56 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/011.15102024/009.from.sql: -------------------------------------------------------------------------------- 1 | /* 2 | ___ ___ ___ __ __ 3 | | __| _ \/ _ \| \/ | 4 | | _|| / (_) | |\/| | 5 | |_| |_|_\\___/|_| |_| 6 | 7 | tablas. 8 | 9 | excelente practica, siempre agregar el esquema.objecto 10 | 11 | Orden jerárquico de evaluación de una consulta SELECT en SQL: 12 | 13 | (*) SELECT - Se seleccionan las columnas o expresiones que se mostrarán. 14 | 1. FROM - Se especifican las tablas de las cuales se obtendrán los datos. 15 | 2. JOIN - Se realizan las uniones entre tablas si es necesario. 16 | 3. WHERE - Se filtran los registros antes de cualquier agrupación. 17 | 4. GROUP BY - Se agrupan los resultados por uno o más campos. 18 | 5. HAVING - Se filtran los grupos generados por el GROUP BY. 19 | 6. SELECT - Se seleccionan las columnas o expresiones que se mostrarán. 20 | 7. ORDER BY - Se ordenan los resultados finales. 21 | 8. LIMIT - Se limita la cantidad de filas que serán devueltas. 22 | */ 23 | 24 | USE parranda; 25 | 26 | -- asterisco (*) : traer todas las columnas (seleccionar todos los atributos) 27 | 28 | SELECT * 29 | FROM parranda.usuarios; 30 | 31 | DESCRIBE parranda.usuarios; 32 | 33 | -- seleccionar atributos 34 | SELECT activo, 35 | identificacion, 36 | id_usuario, 37 | FROM parranda.usuarios; 38 | 39 | -- seleccionar y harcodear | mala practica 40 | SELECT 'bootcamp' tipo, 41 | 'duckdb' curso, 42 | * 43 | FROM parranda.usuarios; 44 | 45 | 46 | -- buena practica 47 | SELECT 'bootcamp' tipo, 48 | 'duckdb' curso, 49 | identificacion, 50 | primer_nombre, 51 | segundo_nombre, 52 | primer_apellido, 53 | segundo_apellido, 54 | telefono, 55 | id_genero_persona, 56 | activo 57 | FROM parranda.usuarios; 58 | 59 | 60 | -- alias, util cuando se relacionan tablas 61 | SELECT usr.activo, 62 | usr.identificacion, 63 | usr.id_usuario, 64 | FROM parranda.usuarios usr; 65 | 66 | 67 | -- limites: buena practica para tomar muestras 68 | SELECT * 69 | FROM parranda.usuarios 70 | LIMIT 5; 71 | 72 | -- ordenamiento: ASC,DESC. SQL: 73 | SELECT 74 | id_usuario, 75 | identificacion, 76 | id_genero_persona 77 | FROM parranda.usuarios 78 | ; 79 | 80 | -- forma 1 | 81 | SELECT 82 | id_usuario, 83 | identificacion, 84 | id_genero_persona 85 | FROM parranda.usuarios 86 | ORDER BY id_genero_persona; -- agregar ASC es redundante, por defecto 87 | 88 | -- forma 2 | 89 | SELECT 90 | id_usuario, 91 | identificacion, 92 | id_genero_persona 93 | FROM parranda.usuarios 94 | ORDER BY 3; 95 | 96 | -- forma transversal DESC | 97 | SELECT 98 | id_usuario, 99 | identificacion, 100 | id_genero_persona 101 | FROM parranda.usuarios 102 | ORDER BY 3 DESC; 103 | 104 | 105 | -- multiples ordenamiento por nombre y index columna | 106 | SELECT 107 | id_usuario, 108 | identificacion, 109 | id_genero_persona 110 | FROM parranda.usuarios 111 | ORDER BY identificacion, 3 DESC; 112 | 113 | 114 | -- funciones generales 115 | 116 | -- funciones generales de agregación | PARTE 1 117 | SELECT 118 | -- calcula la suma total de los valores en la columna id_genero_persona. 119 | SUM(id_genero_persona) AS suma_genero, 120 | 121 | -- calcula el promedio de los valores en la columna id_genero_persona. 122 | AVG(id_genero_persona) AS average_genero, 123 | 124 | -- cuenta el número total de registros en la tabla, considerando solo la columna id_genero_persona. 125 | -- forma 1 126 | COUNT(id_genero_persona) AS total_count_1, 127 | 128 | -- forma 2 129 | COUNT(*) AS total_count_2, 130 | 131 | -- forma 3 | recomendada 132 | COUNT(1) AS total_count_3, 133 | 134 | -- devuelve el valor máximo encontrado en la columna id_genero_persona. 135 | MAX(id_genero_persona) AS max_genero, 136 | 137 | -- devuelve el valor mínimo encontrado en la columna id_genero_persona. 138 | MIN(id_genero_persona) AS min_genero 139 | 140 | FROM parranda.usuarios; 141 | 142 | 143 | 144 | 145 | 146 | -- devuelve una lista de valores únicos de la columna id_genero_persona, eliminando los duplicados. 147 | SELECT DISTINCT(id_genero_persona) AS unique_generos 148 | FROM parranda.usuarios; 149 | 150 | 151 | -- case: es condicional 152 | 153 | -- forma 1 154 | 155 | SELECT 156 | id_genero_persona, 157 | CASE id_genero_persona 158 | WHEN 1 THEN 'hombre' 159 | WHEN 2 THEN 'mujer' 160 | WHEN 3 THEN 'otro' 161 | ELSE 'desconocido' 162 | END AS genero 163 | FROM parranda.usuarios; 164 | 165 | 166 | -- forma #2 167 | SELECT 168 | id_genero_persona, 169 | CASE 170 | WHEN id_genero_persona = 1 THEN 'hombre' 171 | WHEN id_genero_persona = 2 THEN 'mujer' 172 | WHEN id_genero_persona = 3 THEN 'otro' 173 | ELSE 'desconocido' 174 | END AS genero 175 | FROM parranda.usuarios; 176 | 177 | 178 | -- recordar y profindizar en AND: es excluyente 179 | 180 | SELECT 181 | ur.id_genero_persona, 182 | CASE 183 | WHEN ur.id_genero_persona = 1 THEN 'hombre' 184 | WHEN ur.id_genero_persona = 2 THEN 'mujer' 185 | WHEN ur.id_genero_persona = 3 THEN 'otro' 186 | ELSE 'desconocido' 187 | END AS genero 188 | FROM parranda.usuarios ur 189 | WHERE id_genero_persona = 1 190 | --AND id_genero_persona = 2; 191 | 192 | -- uso del OR 193 | -- normalmente atributos diferentes 194 | SELECT 195 | ur.id_genero_persona, 196 | CASE 197 | WHEN ur.id_genero_persona = 1 THEN 'hombre' 198 | WHEN ur.id_genero_persona = 2 THEN 'mujer' 199 | WHEN ur.id_genero_persona = 3 THEN 'otro' 200 | ELSE 'desconocido' 201 | END AS genero 202 | FROM parranda.usuarios ur 203 | WHERE id_genero_persona = 1 OR 204 | id_genero_persona = 2; 205 | 206 | 207 | -- organizar los or's en parentesis 208 | SELECT 209 | ur.id_genero_persona, 210 | CASE 211 | WHEN ur.id_genero_persona = 1 THEN 'hombre' 212 | WHEN ur.id_genero_persona = 2 THEN 'mujer' 213 | WHEN ur.id_genero_persona = 3 THEN 'otro' 214 | ELSE 'desconocido' 215 | END AS genero 216 | FROM parranda.usuarios ur 217 | WHERE (id_genero_persona = 1 OR id_genero_persona = 2); -- puede ser un in 218 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/012.17102024/001.conceptos.avanzados.parte.1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/005.sesiones/012.17102024/001.conceptos.avanzados.parte.1.pdf -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/012.17102024/010.unions.sql: -------------------------------------------------------------------------------- 1 | -- UNION'S - deben tener las mismas columnas 2 | 3 | -- para entenderlo, se debe validar por separado 4 | SELECT identificacion, id_genero_persona 5 | FROM parranda.usuarios 6 | WHERE id_genero_persona = 1; 7 | 8 | 9 | SELECT identificacion, id_genero_persona 10 | FROM parranda.usuarios 11 | WHERE id_genero_persona IN (1,2); 12 | 13 | -- UNION ALL: concatena el resultado de ambos queries incluyendon repetidos 14 | SELECT identificacion, id_genero_persona 15 | FROM parranda.usuarios 16 | WHERE id_genero_persona = 1 17 | UNION ALL 18 | SELECT identificacion, id_genero_persona 19 | FROM parranda.usuarios 20 | WHERE id_genero_persona IN (1,2) 21 | 22 | -- UNION : concatena el resultado de ambos queries y elimina los repetidos 23 | SELECT identificacion, id_genero_persona 24 | FROM parranda.usuarios 25 | WHERE id_genero_persona = 1 26 | UNION 27 | SELECT identificacion, id_genero_persona 28 | FROM parranda.usuarios 29 | WHERE id_genero_persona IN (1,2) -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/012.17102024/011.fagregacion.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Las funciones de agregación son herramientas en SQL que permiten realizar cálculos sobre un conjunto de 3 | datos y devolver un único valor. Se utilizan comúnmente en consultas para resumir o agrupar datos. 4 | 5 | REGLAS: 6 | 1. atributos + funciones de agrupación == GROUP BY 7 | 2. los atributos tomados de tablas deben ser los mismos en el select y group by | por el momento 8 | 3. usar having count = cuando se quiera filtrar datos agrupados 9 | */ 10 | 11 | -- contar el número total de usuarios por género 12 | SELECT id_genero_persona, 13 | COUNT(1) AS total_usuarios 14 | FROM parranda.usuarios 15 | GROUP BY id_genero_persona; 16 | 17 | -- grop by harcodeado 18 | SELECT tt.vigencia, 19 | tt.mes, 20 | tt.dia, 21 | SUM(venta) ventas_totales 22 | FROM ( 23 | SELECT 2024 vigencia, 10 mes, 17 dia, 200 venta 24 | UNION ALL 25 | SELECT 2024 vigencia, 10 mes, 16 dia, 100 venta 26 | UNION ALL 27 | SELECT 2024 vigencia, 10 mes, 17 dia, 20 venta) tt 28 | GROUP BY tt.vigencia, 29 | tt.mes, 30 | tt.dia, 31 | 32 | 33 | -- sumar los totales por género 34 | SELECT id_genero_persona, 35 | SUM(id_genero_persona) AS suma_generos 36 | FROM parranda.usuarios 37 | GROUP BY id_genero_persona; 38 | 39 | 40 | -- promedio de por género 41 | SELECT id_genero_persona, 42 | AVG(id_genero_persona) AS promedio_generos 43 | FROM parranda.usuarios 44 | GROUP BY id_genero_persona; 45 | 46 | -- encontrar el genero mínimo de los usuarios por género 47 | SELECT id_genero_persona, 48 | MIN(id_genero_persona) AS genero_minima 49 | FROM parranda.usuarios 50 | GROUP BY id_genero_persona; 51 | 52 | -- encontrar el genero máxima de los usuarios por género 53 | SELECT id_genero_persona, MAX(id_genero_persona) AS genero_maxima 54 | FROM parranda.usuarios 55 | GROUP BY id_genero_persona; 56 | 57 | -- obtener múltiples agregaciones: 58 | SELECT id_genero_persona, 59 | COUNT(1) AS total_genero, 60 | SUM(id_genero_persona) AS genero_sumatoria, 61 | AVG(id_genero_persona) AS genero_promedio, 62 | MIN(id_genero_persona) AS genero_minima, 63 | MAX(id_genero_persona) AS genero_maxima 64 | FROM parranda.usuarios 65 | GROUP BY id_genero_persona; 66 | 67 | -- HAVING COUNT 68 | -- el uso de HAVING COUNT(...) en SQL se emplea para filtrar grupos de resultados después de que se han aplicado las funciones de agregación. 69 | SELECT id_genero_persona, 70 | COUNT(1) AS total_usuarios 71 | FROM parranda.usuarios 72 | GROUP BY id_genero_persona 73 | HAVING COUNT(1) > 8 74 | ORDER BY 2 DESC 75 | ; -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/012.17102024/012.subqueries.sql: -------------------------------------------------------------------------------- 1 | /* 2 | ¿Para qué se usan los subqueries en SQL? 3 | Los subqueries son preguntas dentro de otras preguntas en una base de datos. Se utilizan para: 4 | 5 | 1. Filtrar datos: Encuentran información específica. 6 | 2. Calcular valores: Hacen sumas o promedios. 7 | 3. Verificar existencia: Comproban si hay datos relacionados. 8 | 4. Simplificar consultas: Hacen las preguntas más fáciles de entender. 9 | 5. Organizar información: Agrupan datos antes de mostrarlos. 10 | 11 | categorías: 12 | IN 13 | NOT IN 14 | = 15 | EXITSA 16 | */ 17 | 18 | 19 | -- subqueries 20 | 21 | -- IN 22 | -- selecciona todos los usuarios que son de género 'hombre' o 'mujer' 23 | SELECT * 24 | FROM parranda.usuarios 25 | -- WHERE id_genero_persona IN (1,2) 26 | WHERE id_genero_persona IN ( 27 | SELECT id_genero_persona 28 | FROM parranda.tipo_genero_persona 29 | WHERE id_genero_persona IN (1, 2) 30 | -- AND activo = 'S' 31 | ); 32 | 33 | 34 | -- NOT IN 35 | -- selecciona id_genero_persona que no es 'mujer' 36 | SELECT * 37 | FROM parranda.usuarios 38 | WHERE id_genero_persona NOT IN ( 39 | SELECT id_genero_persona 40 | FROM tipo_genero_persona 41 | WHERE id_genero_persona = 2 42 | ); 43 | 44 | -- IGUAL = 45 | -- selecciona id_genero_persona que es igual a 'otro' 46 | SELECT 47 | * 48 | FROM parranda.usuarios 49 | WHERE id_genero_persona = ( 50 | SELECT id_genero_persona 51 | FROM parranda.tipo_genero_persona 52 | WHERE id_genero_persona = 3 53 | ); 54 | 55 | -- EXISTS 56 | -- selecciona todos los registros de tipo_genero_persona donde existen usuarios asociados 57 | SELECT * 58 | FROM parranda.tipo_genero_persona AS tg 59 | WHERE EXISTS ( 60 | SELECT 1 61 | FROM parranda.usuarios AS us 62 | WHERE us.id_genero_persona = tg.id_genero_persona 63 | ); -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/012.17102024/013.joins.sql: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | _ ___ ___ _ _ ___ 4 | _ | |/ _ \_ _| \| / __| 5 | | || | (_) | || .` \__ \ 6 | \__/ \___/___|_|\_|___/ 7 | 8 | Los joins son utilizados para combinar filas de dos o más tablas basándose en una relación entre ellas. 9 | 10 | inner join combina filas de dos tablas cuando hay una coincidencia en ambas. 11 | left join (también conocido como Left Outer Join) 12 | right join (también conocido como Right Outer Join) 13 | full join (también conocido como Full Outer Join) 14 | cross join 15 | virtual Joins 16 | */ 17 | 18 | 19 | -- crear el esquema 20 | CREATE SCHEMA IF NOT EXISTS joins; 21 | 22 | -- crear la tabla tipo_genero 23 | CREATE TABLE IF NOT EXISTS joins.tipo_genero ( 24 | id_genero TINYINT PRIMARY KEY, 25 | genero VARCHAR(50) NOT NULL, 26 | activo VARCHAR(1) NOT NULL 27 | ); 28 | 29 | -- crear la tabla usuarios 30 | CREATE TABLE IF NOT EXISTS joins.usuarios ( 31 | id_usuario TINYINT PRIMARY KEY, 32 | nombre_usuario VARCHAR(50), 33 | id_genero TINYINT REFERENCES joins.tipo_genero(id_genero), 34 | activo VARCHAR(1) NOT NULL 35 | ); 36 | 37 | -- insertar datos en tipo_genero 38 | INSERT INTO joins.tipo_genero VALUES 39 | (1, 'masculino', 'S'), 40 | (2, 'femenino', 'S'), 41 | (3, 'no binario', 'N'); 42 | 43 | -- insertar datos en usuarios 44 | INSERT INTO joins.usuarios VALUES 45 | (1, 'juan', 1, 'S'), 46 | (2, 'maria', 2, 'S'), 47 | (3, 'carlos', NULL, 'S'), 48 | (4, 'luisa', NULL, 'S'), 49 | (5, 'alex', NULL, 'S'); 50 | 51 | 52 | 53 | -- generando error de ambiguedad 54 | SELECT activo --error 55 | FROM joins.usuarios usr 56 | INNER JOIN joins.tipo_genero tg ON 57 | usr.id_genero = tg.id_genero; 58 | 59 | -- JOIN ventajas de la union 60 | SELECT usr.id_usuario, 61 | usr.nombre_usuario, 62 | tg.genero, 63 | usr.activo 64 | FROM joins.usuarios usr 65 | INNER JOIN joins.tipo_genero tg ON 66 | usr.id_genero = tg.id_genero 67 | -- WHERE ..; 68 | 69 | -- LEFT JOIN 70 | SELECT * 71 | FROM joins.usuarios usr 72 | LEFT JOIN joins.tipo_genero tg ON 73 | usr.id_genero = tg.id_genero; 74 | 75 | -- RIGHT JOIN 76 | SELECT * 77 | FROM joins.usuarios usr 78 | RIGHT JOIN joins.tipo_genero tg ON 79 | usr.id_genero = tg.id_genero; 80 | 81 | 82 | -- FULL JOIN 83 | SELECT * 84 | FROM joins.usuarios usr 85 | FULL JOIN joins.tipo_genero tg 86 | ON usr.id_genero = tg.id_genero; 87 | 88 | SELECT usr.id_usuario, 89 | usr.nombre_usuario, 90 | ifnull(tg.genero, 'NO-REPORTADO') genero, 91 | usr.activo 92 | FROM joins.usuarios usr 93 | FULL JOIN joins.tipo_genero tg 94 | ON usr.id_genero = tg.id_genero; 95 | 96 | -- CROSS JOIN 97 | SELECT * 98 | FROM joins.usuarios usr 99 | CROSS JOIN joins.tipo_genero tg; 100 | 101 | 102 | -- ejemplo mas de una tabla 103 | SELECT usr.identificacion , 104 | usr.primer_nombre , 105 | usr.primer_apellido , 106 | tm.nombre_genero_musica genero_musical 107 | FROM parranda.musica_persona mp 108 | INNER JOIN parranda.usuarios usr ON 109 | mp.id_usuario = usr.id_usuario 110 | JOIN parranda.tipo_musica tm ON 111 | mp.id_tipo_musica = tm.id_tipo_musica 112 | --LIMIT 5; 113 | 114 | 115 | -- usando group group by 116 | SELECT tm.nombre_genero_musica, COUNT(1) catidad 117 | FROM parranda.musica_persona mp 118 | INNER JOIN parranda.usuarios usr ON 119 | mp.id_usuario = usr.id_usuario 120 | JOIN parranda.tipo_musica tm ON 121 | mp.id_tipo_musica = tm.id_tipo_musica 122 | GROUP BY tm.nombre_genero_musica 123 | HAVING COUNT(*)> 13 124 | 125 | 126 | -- como usar rango top 3 127 | SELECT tm.nombre_genero_musica, COUNT(1) catidad 128 | FROM parranda.musica_persona mp 129 | INNER JOIN parranda.usuarios usr ON 130 | mp.id_usuario = usr.id_usuario 131 | JOIN parranda.tipo_musica tm ON 132 | mp.id_tipo_musica = tm.id_tipo_musica 133 | -- WHERE 134 | GROUP BY tm.nombre_genero_musica 135 | ORDER BY 2 DESC 136 | LIMIT 3 137 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/013.22102024/001.conceptos.avanzados.parte.2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/005.sesiones/013.22102024/001.conceptos.avanzados.parte.2.pdf -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/013.22102024/014.like.sql: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | 4 | _ ___ _ _____ 5 | | | |_ _| |/ / __| 6 | | |__ | || ' <| _| 7 | |____|___|_|\_\___| 8 | 9 | En SQL, la cláusula LIKE se utiliza para buscar un patrón específico dentro de una columna de texto. 10 | busquedas avanzadas (contenido avanzado): https://duckdb.org/docs/sql/functions/regular_expressions.html 11 | */ 12 | 13 | 14 | -- empiece 15 | SELECT * FROM parranda.usuarios usr 16 | WHERE LOWER(primer_nombre) LIKE 'a%' 17 | 18 | 19 | -- finalice 20 | SELECT * FROM parranda.usuarios usr 21 | WHERE LOWER(primer_nombre) LIKE '%a' 22 | 23 | 24 | -- contenga 25 | SELECT * FROM parranda.usuarios usr 26 | WHERE LOWER(primer_nombre) LIKE '%an%' 27 | 28 | -- comodin 29 | SELECT * FROM parranda.usuarios usr 30 | WHERE LOWER(primer_nombre) LIKE '_a%' -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/013.22102024/015.cte.sql: -------------------------------------------------------------------------------- 1 | /* 2 | ___ _____ ___ 3 | / __|_ _| __| 4 | | (__ | | | _| 5 | \___| |_| |___| 6 | 7 | 8 | Son una forma de definir una consulta temporal y segmentada en SQL. 9 | Los CTEs son útiles para organizar consultas complejas, mejorar la legibilidad del código y evitar la repetición de subconsultas. 10 | 11 | WITH PrimerCTE AS ( 12 | SELECT columna1, columna2 13 | FROM tabla1 14 | WHERE condiciones1 15 | ), 16 | SegundoCTE AS ( 17 | SELECT columna3, columna4 18 | FROM tabla2 19 | WHERE condiciones2 20 | ) 21 | -- Consulta principal que utiliza los CTEs 22 | SELECT columna1, columna3 23 | FROM PrimerCTE 24 | JOIN SegundoCTE ON PrimerCTE.columna1 = SegundoCTE.columna3; 25 | 26 | */ 27 | 28 | 29 | 30 | 31 | WITH musica AS ( 32 | SELECT id_tipo_musica id_musica, 33 | UPPER(nombre_genero_musica) musica 34 | FROM parranda.tipo_musica 35 | WHERE activo = 'S' 36 | ), 37 | parranderos AS ( 38 | SELECT 39 | usr.id_usuario, 40 | usr.identificacion , 41 | usr.primer_nombre , 42 | usr.primer_apellido 43 | FROM parranda.usuarios usr 44 | INNER JOIN parranda.plato_persona pp 45 | ON usr.id_usuario = pp.id_persona 46 | WHERE pp.confirmado = 'S' 47 | ), 48 | usuarios_parranda AS ( 49 | SELECT mp.id_usuario, 50 | mp.id_tipo_musica id_musica 51 | FROM parranda.musica_persona mp 52 | ) 53 | 54 | SELECT pr.identificacion , 55 | pr.primer_nombre , 56 | pr.primer_apellido , 57 | ms.musica genero_musical 58 | FROM usuarios_parranda up 59 | INNER JOIN parranderos pr ON 60 | up.id_usuario = pr.id_usuario 61 | INNER JOIN musica ms ON 62 | ms.id_musica = up.id_musica 63 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/013.22102024/016.windows.sql: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | __ _____ _ _ ___ _____ __ 4 | \ \ / /_ _| \| | \ / _ \ \ / / 5 | \ \/\/ / | || .` | |) | (_) \ \/\/ / 6 | \_/\_/ |___|_|\_|___/ \___/ \_/\_/ 7 | 8 | referencias: https://duckdb.org/docs/sql/functions/window_functions.html 9 | */ 10 | 11 | 12 | CREATE SCHEMA ventanas; 13 | 14 | -- crear la tabla ventas_mes en el esquema ventanas 15 | CREATE TABLE ventanas.ventas_mes ( 16 | id_venta TINYINT PRIMARY KEY, 17 | mes VARCHAR(20), 18 | venta INT 19 | ); 20 | 21 | -- insertar datos de ejemplo en la tabla ventas_mes 22 | INSERT INTO ventanas.ventas_mes VALUES 23 | (1,'enero', 100), 24 | (2,'febrero', 200), 25 | (3,'marzo', 150), 26 | (4,'abril', 300), 27 | (5,'mayo', 250); 28 | 29 | 30 | -- crear la tabla ventas_mes en el esquema ventanas 31 | CREATE TABLE ventanas.ventas_usuarios ( 32 | dia_venta TINYINT, 33 | nombre_usuario VARCHAR(20), 34 | valor_venta INT 35 | ); 36 | 37 | -- insertar datos de ejemplo en la tabla ventas_usuarios 38 | INSERT INTO ventanas.ventas_usuarios VALUES 39 | (10,'Pepito', 5), 40 | (11,'Julanito', 2), 41 | (15,'Pepito', 3), 42 | (17,'Pepito', 1); 43 | 44 | 45 | -- NOTA no es GROUP BY 46 | SELECT 'originales' categoria, 47 | mes, 48 | venta ventas 49 | FROM ventanas.ventas_mes 50 | UNION ALL 51 | SELECT 52 | 'agrupados' categoria, 53 | mes, 54 | SUM(venta) ventas, 55 | FROM ventanas.ventas_mes 56 | GROUP BY categoria, mes 57 | UNION ALL 58 | SELECT 59 | 'ventana' categoria, 60 | mes, 61 | SUM(venta) OVER (ORDER BY mes) ventas, 62 | FROM ventanas.ventas_mes 63 | ; 64 | 65 | -- calcular el total acumulado de ventas usando una window function por orden de los registros 66 | SELECT 67 | id_venta, 68 | mes, 69 | venta, 70 | SUM(venta) OVER (ORDER BY id_venta) AS ventas 71 | FROM ventanas.ventas_mes 72 | ORDER BY 1; 73 | 74 | 75 | -- calcular el total acumulado de ventas por usuario usando una window 76 | SELECT 77 | dia_venta, 78 | nombre_usuario, 79 | valor_venta, 80 | SUM(valor_venta) OVER ( 81 | PARTITION BY nombre_usuario ORDER BY dia_venta 82 | ) AS ventas 83 | FROM ventanas.ventas_usuarios 84 | ORDER BY 1; -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/013.22102024/017.pivot.sql: -------------------------------------------------------------------------------- 1 | /* 2 | ___ _____ _____ _____ 3 | | _ \_ _\ \ / / _ \_ _| 4 | | _/| | \ V / (_) || | 5 | |_| |___| \_/ \___/ |_| 6 | 7 | referencias:https://duckdb.org/docs/sql/statements/pivot.html 8 | 9 | El PIVOT en SQL se usa para reorganizar y transformar los datos de una tabla, cambiando filas en columnas para facilitar su análisis. 10 | 11 | PIVOT ⟨dataset⟩ 12 | ON ⟨columns⟩ 13 | USING ⟨values⟩ 14 | GROUP BY ⟨rows⟩ 15 | ORDER BY ⟨columns_with_order_directions⟩ 16 | LIMIT ⟨number_of_rows⟩; 17 | 18 | */ 19 | 20 | -- organizar por dia de venta 21 | PIVOT ( 22 | SELECT 23 | dia_venta, 24 | nombre_usuario, 25 | valor_venta, 26 | SUM(valor_venta) OVER ( 27 | PARTITION BY nombre_usuario ORDER BY dia_venta 28 | ) AS ventas 29 | FROM ventanas.ventas_usuarios 30 | ORDER BY 1 31 | ) 32 | ON dia_venta -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/013.22102024/018.views.sql: -------------------------------------------------------------------------------- 1 | /* 2 | __ _____ _____ _____ 3 | \ \ / /_ _| __\ \ / / __| 4 | \ V / | || _| \ \/\/ /\__ \ 5 | \_/ |___|___| \_/\_/ |___/ 6 | 7 | referencias: https://duckdb.org/docs/sql/statements/create_view.html 8 | 9 | son objetos que representan una consulta almacenada. Funcionan como tablas virtuales, ya que no almacenan datos por sí mismas, 10 | sino que muestran datos de una o más tablas subyacentes en función de una consulta SQL. 11 | 12 | excelente practica, siempre agregar el esquema.objecto 13 | 14 | CREATE OR REPLACE VIEW esquema.nombre AS DQL; 15 | 16 | */ 17 | 18 | -- crear vista con campos heredados (como se llaman los atributos en la entidad) 19 | CREATE OR REPLACE VIEW parranda.v_parranderos AS 20 | SELECT usr.identificacion , 21 | usr.primer_nombre , 22 | usr.primer_apellido , 23 | tm.nombre_genero_musica 24 | FROM parranda.musica_persona mp 25 | INNER JOIN parranda.usuarios usr ON 26 | mp.id_usuario = usr.id_usuario 27 | JOIN parranda.tipo_musica tm ON 28 | mp.id_tipo_musica = tm.id_tipo_musica ; 29 | 30 | 31 | SELECT * FROM parranda.v_parranderos 32 | LIMIT 10; 33 | 34 | -- crear vista con campos camuflados (alias) .. practica recomendada 35 | CREATE OR REPLACE VIEW parranda.v_parranderos2 AS 36 | SELECT usr.identificacion cc, 37 | usr.primer_nombre pnombre, 38 | usr.primer_apellido papellido, 39 | tm.nombre_genero_musica pmusica 40 | FROM parranda.musica_persona mp 41 | INNER JOIN parranda.usuarios usr ON 42 | mp.id_usuario = usr.id_usuario 43 | JOIN parranda.tipo_musica tm ON 44 | mp.id_tipo_musica = tm.id_tipo_musica ; 45 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/013.22102024/019.secuencias.sql: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | ___ ___ ___ _ _ ___ _ _ ___ ___ ___ 4 | / __| __/ _ \| | | | __| \| |/ __| __/ __| 5 | \__ \ _| (_) | |_| | _|| .` | (__| _|\__ \ 6 | |___/___\__\_\\___/|___|_|\_|\___|___|___/ 7 | referencias: https://duckdb.org/docs/sql/statements/create_sequence.html 8 | 9 | 10 | Las secuencias son objetos independeientes que generan números únicos en un orden secuencial, 11 | comúnmente utilizados para crear identificadores únicos para filas en una tabla. 12 | */ 13 | 14 | 15 | CREATE SCHEMA IF NOT EXISTS sqs; 16 | 17 | -- crear secuencia simple 18 | CREATE SEQUENCE IF NOT EXISTS sqs.consecutivo; 19 | 20 | -- obtiene el siguiente valor de la secuencia 21 | SELECT nextval('sqs.consecutivo') AS proximo_valor; 22 | 23 | -- obtiene el valor actual de la secuencia 24 | SELECT currval('sqs.consecutivo') AS valor_actual; 25 | 26 | -- crear secuencia empezando desde un numero especifico 27 | CREATE SEQUENCE IF NOT EXISTS sqs.sq_start START 25; 28 | SELECT nextval('sqs.sq_start') AS proximo_valor; 29 | SELECT currval('sqs.sq_start') AS valor_actual; 30 | 31 | -- incremental por un valor definido 32 | CREATE SEQUENCE IF NOT EXISTS sqs.sq_incr 33 | START WITH 1 34 | INCREMENT BY 5; 35 | 36 | SELECT nextval('sqs.sq_incr') AS proximo_valor; 37 | SELECT currval('sqs.sq_incr') AS valor_actual; 38 | 39 | -- crear secuencias descendentes 40 | CREATE SEQUENCE sqs.sq_desc 41 | START WITH 10 42 | INCREMENT BY -1 43 | MAXVALUE 10; 44 | 45 | SELECT nextval('sqs.sq_desc') AS proximo_valor; 46 | SELECT currval('sqs.sq_desc') AS valor_actual; 47 | 48 | -- generar secuencias con limite 49 | CREATE SEQUENCE sqs.seq_limite START WITH 1 MAXVALUE 3; 50 | SELECT nextval('sqs.seq_limite') AS proximo_valor; -- supera 3, genera error 51 | SELECT currval('sqs.seq_limite') AS valor_actual; 52 | 53 | -- generar secuencias con limite cicliclas 54 | CREATE SEQUENCE sqs.seq_ciclo START WITH 1 MAXVALUE 3 CYCLE; 55 | SELECT nextval('sqs.seq_ciclo') AS proximo_valor; 56 | SELECT currval('sqs.seq_ciclo') AS valor_actual; 57 | 58 | -- atar la secuencia a un atributo 59 | CREATE TABLE IF NOT EXISTS sqs.ventas ( 60 | id_transaccion INTEGER DEFAULT nextval('sqs.consecutivo') PRIMARY KEY, 61 | valor_venta INTEGER 62 | ); 63 | 64 | INSERT INTO sqs.ventas(valor_venta) VALUES (100), (2342); 65 | 66 | SELECT * FROM sqs.ventas; 67 | 68 | -- insertar datos 69 | INSERT INTO sqs.ventas VALUES (nextval('sqs.consecutivo'), 100), 70 | (nextval('sqs.consecutivo'), 2342); 71 | 72 | -- NOTA: mantener la secuencia soltera (no atada a nada) 73 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/014.24202024/001.conceptos.avanzados.parte.3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/005.sesiones/014.24202024/001.conceptos.avanzados.parte.3.pdf -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/014.24202024/020.macros.sql: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | __ __ _ ___ ___ ___ ___ 4 | | \/ | /_\ / __| _ \/ _ \/ __| 5 | | |\/| |/ _ \ (__| / (_) \__ \ 6 | |_| |_/_/ \_\___|_|_\\___/|___/ 7 | 8 | referencias: https://duckdb.org/docs/sql/statements/create_macro.html 9 | 10 | En duckDB, las macros son como vistas (consultas guardadas), 11 | pero con la ventaja de que pueden aceptar parámetros para hacerlas más flexibles y reutilizables. 12 | */ 13 | 14 | -- definir simple macro 15 | CREATE OR REPLACE MACRO sqs.sumar(valor_1, valor_2) AS 16 | valor_1 + valor_2; 17 | 18 | 19 | -- llamar valores harcodeados 20 | SELECT sqs.sumar(1, 2) resultado 21 | 22 | -- usar con atributos dinamicos 23 | SELECT vu.valor_venta, 24 | sqs.sumar(vu.valor_venta, vu.valor_venta * 0.19) total_produto 25 | FROM ventanas.ventas_usuarios vu 26 | 27 | 28 | -- problema cotidiano 29 | SELECT dayname('2024-10-04'::DATE) resultado; 30 | 31 | SELECT 32 | CASE dayname(today()) 33 | WHEN 'Monday' THEN 'Lunes' 34 | WHEN 'Tuesday' THEN 'Martes' 35 | WHEN 'Wednesday' THEN 'Miércoles' 36 | WHEN 'Thursday' THEN 'Jueves' 37 | WHEN 'Friday' THEN 'Viernes' 38 | WHEN 'Saturday' THEN 'Sábado' 39 | WHEN 'Sunday' THEN 'Domingo' 40 | ELSE 'desconocido' 41 | END AS dia_espanol 42 | 43 | 44 | -- crear macro para traducir 45 | CREATE OR REPLACE MACRO sqs.traducir_dia(fecha) AS 46 | CASE dayname(fecha) 47 | WHEN 'Monday' THEN 'Lunes' 48 | WHEN 'Tuesday' THEN 'Martes' 49 | WHEN 'Wednesday' THEN 'Miércoles' 50 | WHEN 'Thursday' THEN 'Jueves' 51 | WHEN 'Friday' THEN 'Viernes' 52 | WHEN 'Saturday' THEN 'Sábado' 53 | WHEN 'Sunday' THEN 'Domingo' 54 | ELSE 'desconocido' 55 | END; 56 | 57 | -- validar resultados 58 | SELECT sqs.traducir_dia('2024-10-04'::DATE) fecha_1 59 | SELECT sqs.traducir_dia(today()) fecha_1 -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/014.24202024/021.enums.sql: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | ___ _ _ _ _ __ __ 4 | | __| \| | | | | \/ | 5 | | _|| .` | |_| | |\/| | 6 | |___|_|\_|\___/|_| |_| 7 | 8 | 9 | referencias: https://duckdb.org/docs/sql/statements/create_macro.html 10 | 11 | El tipo de dato enum en bases de datos se utiliza para definir una lista de 12 | valores posibles para una columna, como si fuera un "diccionario" que contiene 13 | todas las opciones únicas que esa columna puede tener. Es como una lista predefinida 14 | de valores permitidos, y cada valor en esa lista es único. 15 | */ 16 | CREATE SCHEMA IF NOT EXISTS enumeradores; 17 | USE enumeradores; 18 | 19 | CREATE TYPE genero AS ENUM ('hombre', 'mujer', 'otro'); 20 | 21 | 22 | 23 | CREATE TABLE IF NOT EXISTS enumeradores.persona( 24 | nombre_persona VARCHAR NOT NULL, 25 | genero_persona genero NOT NULL 26 | ); 27 | 28 | 29 | INSERT INTO enumeradores.persona VALUES ('softserve', 'otro'); 30 | INSERT INTO enumeradores.persona VALUES ('softserve', 'hombre'); 31 | INSERT INTO enumeradores.persona VALUES ('softserve', 'mujer'); 32 | 33 | -- no valores 34 | INSERT INTO enumeradores.persona VALUES ('softserve', 'profesor'); -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/014.24202024/022.variables.sql: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | __ ___ ___ ___ _ ___ _ ___ ___ 4 | \ \ / /_\ | _ \_ _| /_\ | _ ) | | __/ __| 5 | \ V / _ \| /| | / _ \| _ \ |__| _|\__ \ 6 | \_/_/ \_\_|_\___/_/ \_\___/____|___|___/ 7 | 8 | 9 | 10 | referencias: https://duckdb.org/docs/sql/statements/set_variable.html 11 | 12 | Una variable es un contenedor que se utiliza para almacenar y representar datos en memoria. 13 | Puedes pensar en una variable como una caja etiquetada en la que puedes poner un valor específico, 14 | y luego referirte a ese valor usando el nombre de la variable. 15 | */ 16 | 17 | 18 | 19 | -- NOTA para trabajar con variables, debes tener una versión igual o superior a 1.1 20 | 21 | -- verificar versión 22 | SELECT version() version_duckdb 23 | 24 | -- ir a la base de datos > editar conexión > configuración de conexión > Driver Settings: 25 | -- Libraries > desplegar y ver si la versión es 0.10, seleccionar y darle a Download/Update 26 | -- con eso se actualiza el driver y usa la versión actual 27 | 28 | 29 | -- NOTA: las variables no son persistentes, se reinician con cada desconexión 30 | 31 | -- definir la variable, cambiar por el valor que quieran 32 | SET VARIABLE ruta_archivos = '/Users/lvasq/labs/duckdb'; 33 | SET VARIABLE delimitador_os = '/'; 34 | 35 | -- obtener variables 36 | SELECT getvariable('ruta_archivos') ruta 37 | SELECT getvariable('delimitador_os') ruta 38 | 39 | 40 | SELECT concat_ws( 41 | getvariable('delimitador_os'), 42 | getvariable('ruta_archivos'), 43 | 'prueba', 'texto.txt' 44 | ) ruta 45 | 46 | 47 | -- unset variable 48 | RESET VARIABLE nombre_variable; -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/014.24202024/023.transactions.sql: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | __ ___ ___ ___ _ ___ _ ___ ___ 4 | \ \ / /_\ | _ \_ _| /_\ | _ ) | | __/ __| 5 | \ V / _ \| /| | / _ \| _ \ |__| _|\__ \ 6 | \_/_/ \_\_|_\___/_/ \_\___/____|___|___/ 7 | 8 | 9 | 10 | referencias: https://duckdb.org/docs/sql/statements/transactions.html 11 | https://duckdb.org/2024/09/25/changing-data-with-confidence-and-acid.html 12 | 13 | TCL (Transaction Control Language) es un grupo de comandos en bases de datos usado para manejar 14 | transacciones, asegurando que los cambios se confirmen o se reviertan en caso de error. 15 | 16 | Comandos principales: 17 | COMMIT: Guarda cambios definitivamente. 18 | ROLLBACK: Revierte cambios. 19 | */ 20 | 21 | /* 22 | 23 | CREATE TYPE genero AS ENUM ('hombre', 'mujer', 'otro'); 24 | 25 | CREATE TABLE IF NOT EXISTS enumeradores.persona( 26 | nombre_persona VARCHAR NOT NULL, 27 | genero_persona genero NOT NULL 28 | ); 29 | 30 | */ 31 | 32 | SELECT * FROM enumeradores.persona; 33 | 34 | BEGIN TRANSACTION; 35 | -- si sabemos que no van a fallar, usar commit 36 | INSERT INTO enumeradores.persona VALUES ('x', 'otro'); 37 | INSERT INTO enumeradores.persona VALUES ('y', 'otro'); 38 | COMMIT; 39 | 40 | 41 | BEGIN TRANSACTION; 42 | -- si sabemos que van a fallar, o es critico usar ROLLBACK, si falla 43 | -- algo, se devuelven los cambios 44 | INSERT INTO enumeradores.persona VALUES ('e', 'otro'); 45 | INSERT INTO enumeradores.persona VALUES ('f', 'softserve'); 46 | INSERT INTO enumeradores.persona VALUES ('g', 'softserve'); 47 | INSERT INTO enumeradores.persona VALUES ('h', 'otro'); 48 | 49 | 50 | ROLLBACK; -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/014.24202024/024.extensiones.sql: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | _____ _______ ___ _ _ ___ ___ ___ _ _ ___ 4 | | __\ \/ /_ _| __| \| / __|_ _/ _ \| \| / __| 5 | | _| > < | | | _|| .` \__ \| | (_) | .` \__ \ 6 | |___/_/\_\ |_| |___|_|\_|___/___\___/|_|\_|___/ 7 | 8 | referencias: https://duckdb.org/docs/extensions/overview.html 9 | - https://github.com/codingupmyfuture/bootcampduckdb/blob/main/contenido.curso/002.documentos/007.extensiones.pdf 10 | */ 11 | 12 | -- toda la info default extensiones 13 | SELECT * 14 | FROM duckdb_extensions(); 15 | 16 | -- una mejor vista 17 | SELECT extension_name nombre_extension, 18 | loaded cargada, 19 | installed instalada 20 | FROM duckdb_extensions() 21 | ORDER BY installed DESC, loaded DESC; 22 | 23 | 24 | 25 | -- extensión para leer información del internet 26 | 27 | --instala 28 | INSTALL httpfs; 29 | 30 | -- carga a la sesión 31 | LOAD httpfs; 32 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/014.24202024/025.lectura.archivos.sql: -------------------------------------------------------------------------------- 1 | -- descargar archivos y cambiar ruta 2 | SET VARIABLE datasets = '/Users/lvasq/labs/duckdb'; 3 | SET VARIABLE base_repo = 'https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/refs/heads/main/contenido.curso/000.recursos/datasets' 4 | 5 | -- lectura CSV 6 | -- referencias: https://duckdb.org/docs/guides/file_formats/csv_import 7 | -- https://duckdb.org/docs/data/csv/overview.html 8 | 9 | -- directa 10 | SELECT * FROM '/Users/lvasq/labs/duckdb/titanic.csv' 11 | 12 | -- función, recomendado para configurar delimitador, etc 13 | SELECT * 14 | FROM read_csv('/Users/lvasq/labs/duckdb/titanic.csv' , 15 | delim = ',', 16 | header = TRUE 17 | ); 18 | 19 | -- desde variable 20 | SELECT * FROM read_csv(CONCAT_WS('/', getvariable('datasets'), 'titanic.csv')) 21 | 22 | -- lectura desde internet 23 | SELECT * FROM 'https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/refs/heads/main/contenido.curso/000.recursos/datasets/titanic.csv' 24 | 25 | -- lectura desde internet con variable 26 | SELECT * FROM read_csv(CONCAT_WS('/', getvariable('base_repo'), 'titanic.csv')) 27 | 28 | 29 | -- lectura JSON - IMPORTANTE - estudiarlo 30 | -- referencias: https://duckdb.org/docs/data/json/overview 31 | INSTALL json; 32 | LOAD json; 33 | 34 | 35 | -- general 36 | SELECT * FROM read_json(CONCAT_WS('/', getvariable('datasets'), 'tv_shows.json')) 37 | 38 | -- seleccionando 39 | SELECT tv.nombre,tv.tipo, tv.genero, 40 | tv.castin['name'] persona, 41 | tv.castin['description'] rol, 42 | FROM ( 43 | SELECT 44 | tt.name nombre, 45 | tt.TYPE tipo, 46 | tt.genre genero, 47 | CAST( 48 | UNNEST( 49 | CAST(cast_and_crew AS VARCHAR[]) 50 | ) AS STRUCT( 51 | name VARCHAR, 52 | description VARCHAR 53 | ) 54 | ) castin -- desacoplar actores 55 | FROM read_json(CONCAT_WS('/', getvariable('datasets'), 'tv_shows.json')) tt 56 | ) tv 57 | 58 | 59 | -- lectura Excel 60 | -- referencias: https://duckdb.org/docs/guides/file_formats/excel_export 61 | -- tener activado 62 | -- INSTALL spatial; 63 | -- LOAD spatial; 64 | 65 | INSTALL spatial; 66 | LOAD spatial; 67 | 68 | -- si no se le pone, lee la primera tab 69 | SELECT * FROM st_read( 70 | CONCAT_WS('/', getvariable('datasets'), 'parranda.xlsx')--, 71 | --layer = 'tab' 72 | ); 73 | 74 | -- si no se le pone, lee la primera tab 75 | SELECT * FROM st_read( 76 | CONCAT_WS('/', getvariable('datasets'), 'parranda.xlsx'), 77 | layer = 'musica' 78 | ); 79 | 80 | 81 | -- lectura parquet 82 | -- referencias: https://duckdb.org/docs/guides/file_formats/parquet_import 83 | -- PARQUET == LO MAS USADO A NIVELES ALTOS Y MADUROS 84 | 85 | -- directa 86 | SELECT * FROM '/Users/lvasq/labs/duckdb/comunas_medellin.parquet' 87 | 88 | -- usando función 89 | SELECT * FROM read_parquet('/Users/lvasq/labs/duckdb/comunas_medellin.parquet') 90 | 91 | -- ventajas 92 | DESC SELECT * FROM '/Users/lvasq/labs/duckdb/comunas_medellin.parquet' 93 | 94 | 95 | -- usando DDL 96 | 97 | CREATE SCHEMA IF NOT EXISTS archivos; 98 | 99 | CREATE TABLE archivos.tmp_musica AS 100 | SELECT fl."ID _MUSICA" id, 101 | fl."NOMBRE_ GENERO_MUSICA" genero 102 | FROM st_read( 103 | CONCAT_WS('/', getvariable('datasets'), 'parranda.xlsx'), 104 | layer = 'musica' 105 | ) fl; 106 | 107 | 108 | SELECT * FROM archivos.tmp_musica 109 | 110 | -- usando DML 111 | 112 | CREATE TABLE archivos.musica( 113 | id_genero_musical VARCHAR, 114 | nombre_genero_musical VARCHAR 115 | ); 116 | 117 | INSERT INTO archivos.musica 118 | SELECT fl."ID _MUSICA" id, 119 | fl."NOMBRE_ GENERO_MUSICA" genero 120 | FROM st_read( 121 | CONCAT_WS('/', getvariable('datasets'), 'parranda.xlsx'), 122 | layer = 'musica' 123 | ) fl; 124 | 125 | SELECT * FROM archivos.musica; 126 | 127 | 128 | /* 129 | IMPORTANTE: 130 | duck db soporta leer varios archivos al tiempo, mirar: 131 | https://duckdb.org/docs/data/multiple_files/overview.html 132 | /* -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/015.29102024/001.conceptos.avanzados.parte.4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/005.sesiones/015.29102024/001.conceptos.avanzados.parte.4.pdf -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/015.29102024/026.exportaciones.sql: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | La exportación de datos es un proceso que permite transferir datos desde una base de datos u otro 4 | sistema de almacenamiento a un formato que pueda ser utilizado por otros programas o aplicaciones. 5 | 6 | FORMATOS: 7 | PARQUET 8 | CSV 9 | JSON 10 | EXCEL 11 | 12 | References: https://duckdb.org/docs/guides/file_formats/overview 13 | 14 | Sintaxis: 15 | COPY (tabla o DQL) TO 'ruta/archivo.extension' (FORMAT [FORMATO]); 16 | */ 17 | 18 | -- exportación csv 19 | COPY parranda.tipo_musica TO '~/Downloads/tipo_musica.csv' (FORMAT CSV); 20 | 21 | -- exportación excel 22 | INSTALL spatial; 23 | LOAD spatial; 24 | 25 | COPY parranda.tipo_musica TO '~/Downloads/tipo_musica.xlsx' 26 | WITH (FORMAT GDAL, DRIVER 'xlsx'); 27 | 28 | -- exportación parquet 29 | COPY parranda.tipo_musica TO '~/Downloads/tipo_musica.parquet' (FORMAT PARQUET); 30 | 31 | -- usando DQL 32 | COPY ( 33 | SELECT nombre_genero_musica genero 34 | FROM parranda.tipo_musica 35 | ) TO '~/Downloads/generos_musicales.csv' (FORMAT CSV); 36 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/015.29102024/027.geodata.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* 4 | 5 | ___ ___ ___ ___ _ _____ _ 6 | / __| __/ _ \| \ /_\_ _/_\ 7 | | (_ | _| (_) | |) / _ \| |/ _ \ 8 | \___|___\___/|___/_/ \_\_/_/ \_\ 9 | 10 | referencias: https://duckdb.org/docs/extensions/spatial/overview.html 11 | https://github.com/codingupmyfuture/bootcampduckdb/blob/main/contenido.curso/002.documentos/009.geodata.pdf 12 | */ 13 | 14 | -- descargar y activar plugin 15 | INSTALL spatial; 16 | LOAD spatial 17 | 18 | -- configurar variable 19 | SET VARIABLE geodata = '/Users/lvasq/labs/duckdb'; 20 | 21 | -- local 22 | SELECT * 23 | FROM ST_Read( -- funcion de spatial EXTENSION. 24 | CONCAT_WS('/', getvariable('geodata'), 'comunas_medellin.geojson') 25 | ); 26 | 27 | -- describamos los datos 28 | DESC SELECT * 29 | FROM ST_Read( -- funcion de spatial EXTENSION. 30 | CONCAT_WS('/', getvariable('geodata'), 'comunas_medellin.geojson') 31 | ); 32 | 33 | 34 | 35 | -- dataset #1 36 | -- centremosnos en los datos relevantes 37 | SELECT 38 | codigo nro_comuna, 39 | nombre nombre_comuna, 40 | geom coordenadas 41 | FROM ST_Read( -- funcion de spatial EXTENSION. 42 | CONCAT_WS('/', getvariable('geodata'), 'comunas_medellin.geojson') 43 | ) 44 | ORDER BY 2; 45 | 46 | -- dataset #2 47 | -- crear puntos 48 | SELECT ST_POINT(6.209004649498719, -75.56798270165233) lleras; 49 | 50 | 51 | -- crear puntos #3 52 | SELECT ST_POINT(6.271055144475173,-75.57311620567457) transito 53 | 54 | -- si quisieramos cambiar a otro sistema de coordenadas 55 | SELECT ST_TRANSFORM( 56 | ST_POINT(6.209004649498719, -75.56798270165233), 57 | 'EPSG:4326', 'EPSG:3857' 58 | ); 59 | 60 | -- 61 | SELECT ST_Distance( 62 | ST_TRANSFORM(ST_POINT(6.209004649498719, -75.56798270165233),'EPSG:4326', 'EPSG:3857'), 63 | ST_TRANSFORM(ST_POINT(6.271055144475173, -75.57311620567457),'EPSG:4326', 'EPSG:3857') 64 | ) / 1000 distancia 65 | 66 | -- analizar datos, distancia 67 | -- analizar datos, distancia 68 | WITH lleras AS( 69 | SELECT ST_POINT( 70 | 6.209004649498719, 71 | -75.56798270165233 72 | ) coordenadas 73 | 74 | ), 75 | transito AS ( 76 | SELECT ST_POINT( 77 | 6.271055144475173, 78 | -75.57311620567457 79 | ) coordenadas 80 | ), 81 | comunas as ( 82 | SELECT 83 | codigo nro_comuna, 84 | nombre nombre_comuna, 85 | geom poligono 86 | FROM ST_Read( -- funcion de spatial EXTENSION. 87 | CONCAT_WS('/', getvariable('geodata'), 'comunas_medellin.geojson') 88 | ) 89 | ) 90 | -- EPSG:3857 utiliza una proyección cilíndrica conforme de cercator. 91 | --esto significa que las líneas de latitud y longitud son rectas y 92 | --se cruzan en ángulos rectos. 93 | 94 | SELECT 95 | ll.coordenadas lleras_punto, 96 | tt.coordenadas tto_punto, 97 | st_distance( 98 | st_transform(ll.coordenadas, 'EPSG:4326', 'EPSG:3857'), 99 | st_transform(tt.coordenadas, 'EPSG:4326', 'EPSG:3857') 100 | )/ 1000 distancia_km_lleras_tto, 101 | cm.nro_comuna, 102 | cm.nombre_comuna, 103 | cm.poligono 104 | FROM lleras ll, 105 | transito tt, 106 | comunas cm 107 | WHERE st_within(ll.coordenadas, cm.poligono) OR 108 | st_within(tt.coordenadas, cm.poligono); 109 | 110 | 111 | -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/015.29102024/028.estadisticas.sql: -------------------------------------------------------------------------------- 1 | -- referencias: https://duckdb.org/docs/sql/statements/analyze.html 2 | -- actualizar estadisticas para joins 3 | ANALYZE; 4 | 5 | 6 | 7 | -- referencias: https://duckdb.org/docs/sql/statements/vacuum.html 8 | -- actualizar estadisticas para updates y eliminaciones, actualiza estadistica de tabla 9 | VACUUM ANALYZE; -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/015.29102024/029.linea.comandos.txt: -------------------------------------------------------------------------------- 1 | -- referencias: https://duckdb.org/docs/api/cli/arguments.html 2 | 3 | 4 | -- menú de ayuda 5 | duckdb -h 6 | 7 | 8 | -- versión de base de base de datos 9 | duckdb --version 10 | 11 | 12 | -- abrir base de dato(s) 13 | duckdb base_de_datos; 14 | 15 | 16 | -- ejecutar consulta 17 | duckdb eventos -s 'SELECT * FROM parranda.tipo_musica' 18 | 19 | 20 | -- salida a csv 21 | duckdb eventos -csv -s 'SELECT * FROM parranda.tipo_musica' 22 | 23 | 24 | -- salida a json 25 | duckdb eventos -json -s 'SELECT * FROM parranda.tipo_musica' 26 | 27 | -- salida html 28 | duckdb eventos -html -s 'SELECT * FROM parranda.tipo_musica' --stats 29 | 30 | -- salida box 31 | duckdb eventos -box -s 'SELECT * FROM parranda.tipo_musica' 32 | 33 | -- ejecutar modo 34 | 35 | 36 | -- comandos de punto: https://duckdb.org/docs/api/cli/dot_commands 37 | duckdb ruta/nombre_db < 030.propiedades.sql -------------------------------------------------------------------------------- /contenido.curso/005.sesiones/015.29102024/030.propiedades.sql: -------------------------------------------------------------------------------- 1 | .prompt "BOOTCAMP" 2 | 3 | -- activar tiempo ejecución 4 | .timer on 5 | 6 | -- imprimir 7 | .print '\n' 8 | -- listar tablas 9 | .tables 10 | 11 | 12 | -- ejecutar query modo de salida box 13 | .mode box 14 | SELECT * FROM parranda.tipo_musica; 15 | 16 | .print '\n' 17 | -- modo inline 18 | .mode line 19 | SELECT * FROM parranda.tipo_musica; 20 | 21 | .print '\n' 22 | 23 | -- mostrar config 24 | .show 25 | 26 | .print '\n' 27 | 28 | 29 | .shell cal 30 | -- Turn the timer off 31 | .timer off 32 | -------------------------------------------------------------------------------- /contenido.curso/006.ejercicios/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingupmyfuture/bootcampduckdb/4f78e7b5261d2f5dc3c9763dc7b7a1d97374e7e9/contenido.curso/006.ejercicios/.gitkeep --------------------------------------------------------------------------------