10-12-2013, 23:13
El final del día de hoy (10/12/2013) fue el siguiente:
Verdadero o Falso
1a) Si existe un select dentro de una cláusula HAVING, este debe devolver 1 fila y 1 columna
1b) Gracias a los índices se puede asegurar la integridad referencial (o algo así)
Explicar en no más de 15 renglones
2a) Indices: concepto, funcionalidades y utilización.
2b) Indicar que hace que un DBMS sea transaccional
Práctica
3) Daban un DER:
Aclararon que en cada tabla, lo que está por encima de la línea divisoria corresponde a la PK, es decir t1_id es PK de T1, t1_id y t3_id son PK compuesta de T2, y t3_id es PK de T3
y la siguiente query relacionada:
SELECT T1.t1_id, (SELECT COUNT(distinct T2.t3_id) from T2 where T2.t1_id = T1.t1_id)
FROM T1
3a1) Pide reescribir la query pero sin subselects, y que devuelva el mismo resultado
3a2) ¿Como cambiaría el resultado de la consulta si se saca el "distinct" de la query?
3b) Dada la siguiente query, en caso de que tenga errores, detallar cada uno de ellos. Si no tuviera errores, ¿que podría hacer para optimizar la consulta siendo que la tabla T1 posee más de 1 millón de registros?
SELECT T1.t1_id, T1.t1_col2+T1.t1_col2, SUM(T2.t3_col2)
FROM T1, T2
WHERE T2.t1_id = T1.t1_id AND COUNT(*)>1
GROUP BY T1.t1_id
HAVING T1.t1_id IN (select T3.t3_id from T3 order by T3.t3_col2)
Dieron 5 minutos para revisarlo al comenzar, y luego 1 hora 15 minutos para resolverlo.
Saludos!
Verdadero o Falso
1a) Si existe un select dentro de una cláusula HAVING, este debe devolver 1 fila y 1 columna
1b) Gracias a los índices se puede asegurar la integridad referencial (o algo así)
Explicar en no más de 15 renglones
2a) Indices: concepto, funcionalidades y utilización.
2b) Indicar que hace que un DBMS sea transaccional
Práctica
3) Daban un DER:
Aclararon que en cada tabla, lo que está por encima de la línea divisoria corresponde a la PK, es decir t1_id es PK de T1, t1_id y t3_id son PK compuesta de T2, y t3_id es PK de T3
y la siguiente query relacionada:
SELECT T1.t1_id, (SELECT COUNT(distinct T2.t3_id) from T2 where T2.t1_id = T1.t1_id)
FROM T1
3a1) Pide reescribir la query pero sin subselects, y que devuelva el mismo resultado
3a2) ¿Como cambiaría el resultado de la consulta si se saca el "distinct" de la query?
3b) Dada la siguiente query, en caso de que tenga errores, detallar cada uno de ellos. Si no tuviera errores, ¿que podría hacer para optimizar la consulta siendo que la tabla T1 posee más de 1 millón de registros?
SELECT T1.t1_id, T1.t1_col2+T1.t1_col2, SUM(T2.t3_col2)
FROM T1, T2
WHERE T2.t1_id = T1.t1_id AND COUNT(*)>1
GROUP BY T1.t1_id
HAVING T1.t1_id IN (select T3.t3_id from T3 order by T3.t3_col2)
Dieron 5 minutos para revisarlo al comenzar, y luego 1 hora 15 minutos para resolverlo.
Saludos!