Francisco, Creo que estamos en esta lista para ayudarnos mutuamente, y orientarnos de cómo resolver algunos problemas comunes que tenemos principalmente con postgresql, dependiendo de la relevancia del problema y el tiempo que tengamos podremos discutir mas/menos ampliamente del tema.
Lo que no me parece es el modo en que lo hacemos, y principalmente no comparto tu forma de regañar a las personas, y pienso que podría espantar a algunas personas de esta lista. No cuestiono la forma de ser de cada uno y sus particularidades!, la experiencia me ha enseñado a extraer lo positivo y valioso de las conversaciones por muy negras que se vean. Ahora, dependiendo de la persona que consulte, podrá analizar en su mérito si el código enviado, si le sirve o no, al igual que las extensas explicaciones, dudas e hipótesis planteadas por tí. Ambos métodos podrían confundir a personas mas novatas, código “complejo” o texto extenso!. No les parece raro q habiendo tanto hispano parlante llegue con suerte un par de correos semanales a esta lista?, vs otras listas de postgres que tienen decenas de interacciones diarias?. Los invito a revisar esto y a tratarnos con mejores forma, quizás aquí está la clave. saludos > El 15-05-2019, a las 06:01, Francisco Olarte <fola...@peoplecall.com> > escribió: > > Eduardo: > > On Tue, May 14, 2019 at 8:20 PM Eduardo Arenas <edo...@gmail.com> wrote: >> Ahí va el experimento con 1 millón de registros, y comprobación con una >> windows función de que el procedimiento entrega igual cantidad de días de la >> semana aprox en la muestra. > > Nadie duda que puedas hacer un query que genere un numero aleatorio, y > una cantidad igual de dias de la semana, pero ...pero..... > >> drop table if exists random_semana; >> create temp table random_semana as >> with consulta as ( >> select generate_series(1,1000000) as q >> ) >> select q,trunc(ran) as ran >> from >> ( >> select * >> ,random()*7+1 as ran >> from consulta >> ) as a; > > Ese query parece hecho a posta pa confundir a alguien en una pregunta > de examen, ¿ porque un CTE y un select anidado en lugar de dos del > mismo tipo ? > Eso parece generar sin mas una lista numerada de 1 millon de numeros > aleatorios de 1 a 7... > >> select *,count(*) over (partition by ran) from random_semana order by 1; > > Y esto parece que los cuenta. No se que tiene que ver esto con el > sacar una muestra aleatoria con unas caracteristicas dadas. Si lo que > pretende es probar que el generador de aleatorios no es > espectacularmente malo, parece correcto. Ahora bien, si cambias el > limite de un millon a siete, por aquello de que sea divisible por 7, > repites el experimento 100 veces, p.e., y en todas te salen 1 millon > de cada clase yo me preocuparia ( por hacer experimentos estadisticos > que tampoco solucionan el problema pero son algo mas truculentos ). > >> PS… Hay cosas que se puede resolver discutiendo, y otras q se puede resolver >> haciendo el experimento… esta es una de ellas. La documentación de un >> sistema es el código funcionando, que es lo que hace funcionar al sistemas, >> el resto es música!. > > Aqui no se discutia mucho, pero bueno. Dejando aparte que no se que > intenta probar ese query, hay cosas que hay que mirar antes. Una > solucion probabilistica puede ser suficientemente buena para lo que se > quiere, pero hay que tener aprobacion de que lo es. Una seleccion > aleatoria de muestras funcionando un millon de veces no te garantiza > que funcione a la siguiente, lo sabes de sobra. Es como el tipico > problema de "quiero mandar el user ID pero que no se vea que viene de > un serial, voy a mandar el <insert favorite hash function>". Eso puede > colisionar ( si no demuestras primero que tu funcion de hash no tiene > colisiones en el dominio de los user id ), por lo que hay que usar una > funcion de encriptacion. Puedes generar trillones de user ids y no > tener colisiones, pero necesitas una funcion invertible para > garantizar que no las tienes. O puedes decirle al jefe que vas a usar > un codigo mas simple y barato, que lo has probado unas cuantos > millones de veces, y que la probabilidad de colision es tan baja que > no justifica el coste de hacer uno correcto. > > Francisco Olarte.