codingupmyfuture / bootcampduckdb

Crash database course, using DuckDB as the engine.
MIT License
48 stars 7 forks source link

Advance_E18_P20 Posibles problemas en la calificación punto 7, 10, 11,13, 15, 16, 17, 18 #50

Open andresgonzalezrpo opened 2 weeks ago

andresgonzalezrpo commented 2 weeks ago

Hola, como están amigos, tengo algunos inconvenientes con este ultimo taller por si alguien me puede dar una mano. gracias

Ejercicio 7: Uso de Like para usuarios (Nivel III) Tengo mi respuesta tal cual a la del control, pero mi query está generando un bug en el bot, dejo el error por aca:

El ejercicio ha fallado debido a: Traceback (most recent call last): File "/Users/lvasq/miniconda3/envs/ss/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "/Users/lvasq/miniconda3/envs/ss/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 941, in do_execute cursor.execute(statement, parameters) File "/Users/lvasq/miniconda3/envs/ss/lib/python3.10/site-packages/duckdb_engine/init.py", line 140, in execute self.__c.execute(statement, parameters) duckdb.duckdb.ParserException: Parser Error: syntax error at end of input The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/Users/lvasq/repositories/personal/evaluator/evaluator/src/qualifier/exercise/sql.py", line 234, in _fail_safe_run_cell results = pd.DataFrame(_db_session.execute(statement=statement)) File "/Users/lvasq/miniconda3/envs/ss/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2362, in execute return self._execute_internal( File "/Users/lvasq/miniconda3/envs/ss/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2256, in _execute_internal result = conn.execute( File "/Users/lvasq/miniconda3/envs/ss/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1418, in execute return meth( File "/Users/lvasq/miniconda3/envs/ss/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 515, in _execute_on_connection return connection._execute_clauseelement( sqlalchemy.exc.ProgrammingError: (duckdb.duckdb.ParserException) Parser Error: syntax error at end of input [SQL: SELECT t.nombre_sitio AS sitio_turistico,t.nombre_sitio_1 AS tipo_sitio, t.latitud, t.longitud, t.nombre_punto AS punto_interes, t.abreviacion, tst2.nombre_sitio AS tipo_punto_interes FROM ( SELECT FROM ( SELECT FROM turismo.sitios_turisticos st] (Background on this error at: https://sqlalche.me/e/20/f405).

Punto 11 Contexto: Crea una consulta utilizando CTEs para encontrar los 3 tipos de sitios turísticos con el mayor promedio de accidentes dentro de un radio de 1 km.

Después de invertir un buen tiempo revisando minuciosamente este punto, quiero dejarlo por acá nuevamente por que no encuentro el error. Estoy obteniendo los siguientes resultados:

Imagen2 se puede ver una gran diferencia, hay algo muy curioso y es que para Basílica y estación de ferrocarril en mi query me arroja el mismo resultado pero no está en mi top 3. voy a dejar el query si alguien me puede hacer alguna sugerencia. gracias

WITH cantidad_accidentes_por_sitio AS ( -- EL CTE calcula la cantidad de accidentes cercanos por cada sitio turistico

SELECT st.id_sitio_turistico, st.id_tipo_sitio, tst.nombre_sitio, COUNT(1) cantidad_accidentes FROM turismo.sitios_turisticos st INNER JOIN turismo.tipo_sitio_turistico tst ON st.id_tipo_sitio = tst.id_tipo_sitio INNER JOIN transito.accidentes a ON (6371 ACOS( COS(RADIANS(st.latitud)) COS(RADIANS(a.latitud)) COS(RADIANS(st.longitud) - RADIANS(a.longitud)) + SIN(RADIANS(st.latitud)) SIN(RADIANS(a.latitud)))) < 1

GROUP BY st.id_sitio_turistico,st.id_tipo_sitio, tst.nombre_sitio ORDER BY 4 DESC ) -- El query principal agrupa los sitios por tipo_sitio

SELECT nombre_sitio tipo_sitio, SUM(cantidad_accidentes) promedio_accidentes, COUNT(1) total_sitios FROM cantidad_accidentes_por_sitio GROUP BY nombre_sitio ORDER BY 2 DESC LIMIT 3

La única duda que me queda es que a la fórmula brindada por el notebook me tocó agregarle ACOS por que si no, no me funcionaba, de pronto ahí puede haber algún error pero en lo que estuve investigando parece que es necesario para que la formula trabaje.

Punto 15 Contexto: Utilizando el esquema transito, crea una consulta que calcule el promedio móvil del número de accidentes para cada gravedad_accidente durante una ventana de 3 meses

My query devuelve los mismos resultados del control pero estoy obteniendo un bug por parte del bug, adjunto el error

Debido a: El ejercicio ha fallado debido a: Traceback (most recent call last): File "/Users/lvasq/miniconda3/envs/ss/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "/Users/lvasq/miniconda3/envs/ss/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 941, in do_execute cursor.execute(statement, parameters) File "/Users/lvasq/miniconda3/envs/ss/lib/python3.10/site-packages/duckdb_engine/init.py", line 140, in execute self.__c.execute(statement, parameters) duckdb.duckdb.ParserException: Parser Error: syntax error at end of input The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/Users/lvasq/repositories/personal/evaluator/evaluator/src/qualifier/exercise/sql.py", line 234, in _fail_safe_run_cell results = pd.DataFrame(_db_session.execute(statement=statement)) File "/Users/lvasq/miniconda3/envs/ss/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2362, in execute return self._execute_internal( File "/Users/lvasq/miniconda3/envs/ss/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2256, in _execute_internal result = conn.execute( File "/Users/lvasq/miniconda3/envs/ss/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1418, in execute return meth( File "/Users/lvasq/miniconda3/envs/ss/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 515, in _execute_on_connection return connection._execute_clauseelement( sqlalchemy.exc.ProgrammingError: (duckdb.duckdb.ParserException) Parser Error: syntax error at end of input [SQL: SELECT mes, periodo, id_gravedad_accidente, cantidad_accidentes, avg(cantidad_accidentes) OVER ( PARTITION BY id_gravedad_accidente ORDER BY mes, periodo ROWS 2 PRECEDING] (Background on this error at: https://sqlalche.me/e/20/f405)

Punto 16

Contexto: Analice las tendencias de accidentes calculando el número acumulado de accidentes para cada clase y gravedad de accidente, junto con el porcentaje de accidentes para cada combinación en relación con el total de accidentes en esa clase. Incluya un ranking de frecuencia de accidentes para cada clase.

Obtengo los mismos resultados pero estoy recibiendo el siguiente mensaje: La solución no superó la prueba: Attributes of DataFrame.iloc[:, 6] (column name="porcentaje_en_clase") are different Attribute "dtype" are different [left]: float64 [right]: object

Ya hice CAST para retornar igual al bot pero no pasó. Si de pronto alguien tiene alguna sugerencia. Adjunto la imagen donde se evidencia que tengo el mismo valor en la columna porcentaj_en_clase

Imagen4

Punto 17: Tengo el mismo resultado del control pero estoy obteniendo el siguiente mensaje:

Ejercicio no superado. Puntuación obtenida: 0.0% Puntuación mínima requerida: 75.0% Debido a: La solución no superó la prueba: Las columnas Debido a: La solución no superó la prueba: Las columnas no concuerdan con las propuestas del control: ['PERIODO', 'ABRIL ', 'AGOSTO ', 'DICIEMBRE ', 'ENERO ', 'FEBRERO ', 'JULIO ', 'JUNIO ', 'MARZO ', 'MAYO ', 'NOVIEMBRE ', 'OCTUBRE ', 'SEPTIEMBRE']

Adjunto la imagen donde se evidencia el mismo valor tanto en el nombre de las columnas como en el resultado

Imagen5

Punto 18: no recibí respuesta de parte del bot en la segunda revisión.

Gracias por su atención y tiempo

jandresjn commented 2 weeks ago

El punto 10 tiene por ahí un Count(distinct ), por que cada fila tiene id de colegio + id de estudiantes, por lo que hay varias filas con el mismo id de colegio. Con eso me dió igual

andresgonzalezrpo commented 2 weeks ago

Gracias @jandresjn con esto lo pude resolver.

jandresjn commented 2 weeks ago

Ve el punto 18 te dió igual a la respuesta esperada?, a mi me dan mas comunas y cantidades mas grandes, teniendo en cuenta el radio de 7km y que estén dentro de las comunas y el redondeo :S

andresgonzalezrpo commented 2 weeks ago

Me pasa igual @jandresjn, te adjunto mis resultados Imagen1 Pero parece que el bot no lo está calificando, te pasa igual?

andresgonzalezrpo commented 1 week ago

@codingupmyfuture este issue quedó etiquetado como resuelto pero solamente se resolvió un punto, aún tengo dudas en el punto 7, 11, 15, 17 si de pronto aún se pueden revisar. gracias @keljozap @luisvasv-teck Los etiqueto a uds por que muchas de estas dudas son errores de compilación y resultados idénticos al control como en el punto 17. Gracias por su tiempo