Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Aporte] Final Gestión de Datos - 19/02/2020
Autor Mensaje
Mauro_bilo Sin conexión
Campeon del cubo Rubik
Tool
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 123
Agradecimientos dados: 138
Agradecimientos: 45 en 22 posts
Registro en: Sep 2010
BlogSpot Facebook LinkedIn
Mensaje: #1
[Aporte] Final Gestión de Datos - 19/02/2020 Finales Gestión de Datos
Bueno gente,

Con mucha felicidad comparto mi último final de la carrera que pude aprobar con un 7 el pasado 19/02/2020, y que preparó Lacquaniti. Todavía no puedo creer que no tengo que estudiar más.

Así que aún en la joda, les comparto el final y lo que hice en el mismo.

1a) y 1b) creo que fueron los puntos que hice mal. Creo que se pueden buscar con facilidad.

2a)

* Las funciones estan obligadas a retornar un valor
* Los SP's no están obligados a retornar ningún valor

* Las funciones pueden invocarse en el WHERE y en el FROM.
* Los SP's no puede invocar ni en el WHERE ni en el FROM.

* Las funciones NO pueden modificar ningún valor de alguna tabla de la base mediante INSERT, UPDATE o DELETE.
* Los SP's pueden modificar valores en las tablas.

2b) Hice el paso a paso del burbujeo, que consiste en N-1 pasadas donde los elementos se van comparando de a pares. Comenté que no era performante, y que era el peor de los métodos de ordenamiento.

Añadí también el MERGE SORT que me lo acordaba de memoria por algunos videos que vi en Youtube.

3a)
Consideren la imagen adjunta que muestra los registros en la tabla, porque fue lo que dibujé en el examen.


CREATE TABLE Numeros (
Clave INT PRIMARY KEY,
Valor INT
)

INSERT INTO Numeros VALUES (1, 1000)
INSERT INTO Numeros VALUES (2, 2000)
INSERT INTO Numeros VALUES (3, 3000)
INSERT INTO Numeros VALUES (4, 3000)
INSERT INTO Numeros VALUES (5, 3000)
INSERT INTO Numeros VALUES (6, null)
INSERT INTO Numeros VALUES (7, null)
INSERT INTO Numeros VALUES (8, null)

SELECT COUNT(Valor) FROM Numeros -- N
SELECT COUNT(Clave) FROM Numeros -- M

-- Se sabe que 0 < N < M < 5000

-- Como se pide indicar el dominio, de la siguiente consulta
SELECT COUNT(DISTINCT Valor) FROM Numeros

--Mirando la tabla, con los valores que inserte, se cumple que N < M,
-- Y ademas agregue unas filas en Valor repetidas (en este caso el 3000) se repite 3 veces

--Se sabe que el DISTINCT, elimina los repetidos, por lo tanto de tres filas iguales, el count devuelve 1

--Defino: I = Cantidad de filas repetidas en Numeros
--El dominio queda entonces:

0 < M - N - I + 1 < 5000


3b)


-- Para este otro punto insertamos algunas otras filas mas grandes.

INSERT INTO Numeros VALUES (4000, 3000)
INSERT INTO Numeros VALUES (5000, 3000)
INSERT INTO Numeros VALUES (6000, 2345)
INSERT INTO Numeros VALUES (7000, 2345)
INSERT INTO Numeros VALUES (8000, 2345)


SELECT TOP 5 N1.Clave FROM Numeros N1
WHERE N1.Clave IN (SELECT TOP 5 N2.Clave FROM Numeros N2 WHERE N2.Clave > 0 ORDER BY N2.Clave ASC)
UNION
SELECT TOP 5 N1.Clave FROM Numeros N1
WHERE N1.Clave IN (SELECT TOP 5 N2.Clave FROM Numeros N2 WHERE N2.Clave > 0 ORDER BY N2.Clave DESC)


Espero que les sirva che. Yo pude preparar la materia metiendole mucho huevo en una semana. Si tienen un poquito más de tiempo, creo que van a llegar más holgados incluso.

Saludos! Espero para cualquier duda


Archivo(s) adjuntos Imagen(es)
       
(Este mensaje fue modificado por última vez en: 23-02-2020 12:26 por Mauro_bilo.)
22-02-2020 19:36
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Mauro_bilo recibio 2 Gracias por este post
heinn (07-08-2020), carobaldino (04-03-2023)
chrisgel15 Sin conexión
Profesor del Modulo A
De Racing, Vago y Atorrante
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 264
Agradecimientos dados: 448
Agradecimientos: 139 en 69 posts
Registro en: Jul 2010
Facebook
Mensaje: #2
RE: [Aporte] Final Gestión de Datos - 19/02/2020
Mauro_bilo

Felicitaciones por aprobar y recibirte!!

Consulta, partiendo de aca:

-- Se sabe que 0 < N < M < 5000

Esto que pones esta bien?

0 < N - M - I + 1 < 5000

N - M daria negativo, o no?

Para mi el resultado seria: 0 < RESULTADO < N < M < 5000
22-02-2020 21:16
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Mauro_bilo Sin conexión
Campeon del cubo Rubik
Tool
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 123
Agradecimientos dados: 138
Agradecimientos: 45 en 22 posts
Registro en: Sep 2010
BlogSpot Facebook LinkedIn
Mensaje: #3
RE: [Aporte] Final Gestión de Datos - 19/02/2020
(22-02-2020 21:16)chrisgel15 escribió:  Mauro_bilo

Felicitaciones por aprobar y recibirte!!

Consulta, partiendo de aca:

-- Se sabe que 0 < N < M < 5000

Esto que pones esta bien?

0 < N - M - I + 1 < 5000

N - M daria negativo, o no?

Para mi el resultado seria: 0 < RESULTADO < N < M < 5000

Tiene razon señor, me confundí al escribirlo y no considerar los NULL's. Sería así:

0 < M - (M - N) - I + 1 < 5000

Donde en el caso del ejemplo sería:

M = 8
N = 5
I = 3
M - N = 3 ---> filas con Valor en NULL

Entonces: Count(distinct Valor) = 8 - (8 - 5) - 3 + 1 = 3

Decime que te parece ahora.
(Este mensaje fue modificado por última vez en: 23-02-2020 12:36 por Mauro_bilo.)
23-02-2020 12:36
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
chrisgel15 Sin conexión
Profesor del Modulo A
De Racing, Vago y Atorrante
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 264
Agradecimientos dados: 448
Agradecimientos: 139 en 69 posts
Registro en: Jul 2010
Facebook
Mensaje: #4
RE: [Aporte] Final Gestión de Datos - 19/02/2020
Mauro_bilo, como estas? Para mi sigue estando mal.

Por un lado, esta cuenta:

M - (M - N) - I + 1

Se simplifica...

M - M + N - I + 1

N - I + 1

Que para tu ejemplo sigue dando bien, pero solo porque repetiste un solo valor, el 3000.

Si repetis uno mas, el 2000 por ejemplo, ya no se cumple el tema del "+1". Ejemplo, repitiendo un valor mas:

M: 10
N: 6
I: 5 (Cantidad de filas repetidas son 5...tres veces el 3000, dos veces el 2000).

El resultado deberia dar igual (3).

Pero...

M - (M - N) - I + 1
10 - (10 - 6) - 5 + 1
10 - 4 - 5 + 1 = 2.
Da mal.

Eso es porque el +1 solo intenta "devolver" una fila cuando intentas quitar todas las repetidas de un caso.

Mi solucion propuesta:

I: Cantidad de filas efectivamente repetidas (si el 3000 esta 3 veces, I = 2. Si ademas esta repetido una vez el 2000, I = 3).

Y la respuesta seria

0 < N - I < N < M < 3000

Para tu primer caso es: 5 - 2 = 3 (se cumple)
y para mi segundo ejemplo es: 6 - 3 = 3 (se cumple)

Avisame!

Saludos
23-02-2020 13:43
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Mauro_bilo Sin conexión
Campeon del cubo Rubik
Tool
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 123
Agradecimientos dados: 138
Agradecimientos: 45 en 22 posts
Registro en: Sep 2010
BlogSpot Facebook LinkedIn
Mensaje: #5
RE: [Aporte] Final Gestión de Datos - 19/02/2020
(23-02-2020 13:43)chrisgel15 escribió:  Mauro_bilo, como estas? Para mi sigue estando mal.

Por un lado, esta cuenta:

M - (M - N) - I + 1

Se simplifica...

M - M + N - I + 1

N - I + 1

Que para tu ejemplo sigue dando bien, pero solo porque repetiste un solo valor, el 3000.

Si repetis uno mas, el 2000 por ejemplo, ya no se cumple el tema del "+1". Ejemplo, repitiendo un valor mas:

M: 10
N: 6
I: 5 (Cantidad de filas repetidas son 5...tres veces el 3000, dos veces el 2000).

El resultado deberia dar igual (3).

Pero...

M - (M - N) - I + 1
10 - (10 - 6) - 5 + 1
10 - 4 - 5 + 1 = 2.
Da mal.

Eso es porque el +1 solo intenta "devolver" una fila cuando intentas quitar todas las repetidas de un caso.

Mi solucion propuesta:

I: Cantidad de filas efectivamente repetidas (si el 3000 esta 3 veces, I = 2. Si ademas esta repetido una vez el 2000, I = 3).

Y la respuesta seria

0 < N - I < N < M < 3000

Para tu primer caso es: 5 - 2 = 3 (se cumple)
y para mi segundo ejemplo es: 6 - 3 = 3 (se cumple)

Avisame!

Saludos

Perfecto. Si posiblemente me situé en un solo ejemplo y quedó mal. Quizás podría haberse resuelto declarando otra variable, pero me parece bien como lo pensaste. Por suerte zafé por los otros... este se ve que lo tenía mal.

Gracias y éxitos en el examen.
23-02-2020 13:59
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)