Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   ¿Es posible ordenar los registros de manera aleatoria? (https://www.clubdelphi.com/foros/showthread.php?t=87829)

jeremiselxi 03-03-2015 14:24:28

¿Es posible ordenar los registros de manera aleatoria?
 
2 Archivos Adjunto(s)
Buenos días.

Esperando se encuentren bien indicaré primero cual es el problema.

Yo tengo una tabla llamada "Accesos_y_Clausuras" la cual es usada para llevar un registro de las actividades diarias del departamento de seguridad.

Entonces viene el problema, yo necesito generar una consulta agrupada por las actividades mediante la elección de las fechas desde y hasta, así como también en base a esto generar un gráfico.

Nota: estos dos ya lo tengo y con el código SQL siguiente obtengo mi resultado excelentemente.

Código SQL [-]
SELECT a.Actividad AS [ACTIVIDADES REALIZADAS], Count(b.Actividad) AS TOTALES
 FROM Accesos_y_Clausuras AS a, Accesos_y_Clausuras AS b 
 WHERE (((b.[No])=[a].[No])) and a.Fecha >= :fechadesde and a.Fecha <= :fechahasta  GROUP BY a.Actividad order BY a.Actividad

Ver imagen 1.png y 2.png.

¿Cuál es el problema?

Si se pueden dar cuenta dependiendo de la cantidad de veces que se repita la actividad, si son pocas las veces, ocasionará que en el gráfico se muestren juntas varios registros.

Adjunto la información del mes de enero del 2015 para una mejor aclaración.

Código:

Actividades Realizadas                              Totales
Activación de Usuario                            5
Asignación Caja-Usuario                              1
Asociación de Usuario                                      5
Baja a Empleado                                      11
Bloqueo de Cuenta                                      4
Cambio de Perfil                      1
Creación de Grupo                                      1

Creación de Usuario                                      35
Reinicio de Password                                      39
Resolución de Incidencia                              5
Restricción de Acceso                                      1
Solicitud de Acceso                                      29
Generación de Nómina - Eikon                      5
Generación de Nómina - Manual                      20
Total                                                      162

Si se pueden dar cuenta como "Cambio de Perfil" y "Creación de Grupo" tienen un solo registro en el mes de enero el gráfico se genera con label muy pegado.

Entonces la solución que se me ocurre es, poder ordenar aquellas actividades que se repiten muy pocas veces en el medio de dos actividades que se repiten muchas veces para que así se muestre de una mejor manera el gráfico.

Nota: Para generarse el gráfico, toma de referencia los registros de la misma manera en que se muestran en el grid.

Espero haber sido bien explicito.

Gracias de antemano por su acostumbrada colaboración.

Saludos.

mamcx 03-03-2015 18:21:50

Se puede generar un SQL que devuelve registros aleatorios? Si, pero eso depende del motor. Por ejemplo es postgreSQL una forma poco optima es:

Código SQL [-]
SELECT * FROM table ORDER BY RANDOM()

Sin embargo, tu VERDADERO PROBLEMA es que estas tratando de resolver mal el asunto. Lo que quieres es tener una buena grafica. Deberias es pensar: Cual es la MEJOR forma de graficar los datos? En vez de: Cual es la forma de TORCER la información pa que se EMBUTA de forma tal que ESTA VEZ de lo que espero? Porque si eliges mal el tipo de grafico, no hay como queden los datos buenos.

Que los obtengas aletatorios solo empeora las cosas, ya que cada vez saldra de forma diferente la grafica!

El objetivo de una grafica es aclarar *algo*, y mas concretamente: ENFOCAR algo. Si tu grafica no es MAS clara que una tabla o listado, la grafica NO TIENE SENTIDO HACERLA.

---

REGLA #1:

JAMAS USES TORTA.

Siempre que parece que una torta es una opcion, hay otro tipo de grafica que lo hace mejor. SIEMPRE.

REGLA #1, Extra:

NO grafica en 3D

REGLA #2:

Ten claro que es lo que quieres resaltar o enfocar.

Estas comparando? Mirando una tendencia? Mostrando como algo es diferente de lo demas? Mostrando como es lo mismo?

Quieres ver cual es el producto mas vendido? Como van las cosas en el año? Como compara este mes con el anterior? Que es mas rapido, o lento?

Una persona cualquiera deberia poder sacar una conclusion razonable y especifica al ver la grafica (exceptuando las que son de tipo muy tecnico, como las radiales).

Una grafica: Una pregunta concreta que tiene una respuesta concreta. Una sola.

Es por eso que las graficas NO reemplazan las tablas. Para ver detalle, es mejor ver los datos tal cual.

---

En terminos generales: Usa graficas de lineas, barras & columnas: Esas resuelven el 90% de todo lo que quieres saber. Todos los demas tipos de graficas son *especializadas* (incluyendo la torta: Tiene un unico caso de uso valido. Y ese caso de uso se puede resolver con otro tipo de grafica!).

---
Los principios de Edwar Tufte te pueden servir. Encontre esta mini-explicacion:

https://optyestadistica.wordpress.co...a-en-graficos/

Resumen:

- Lineas, barras, columnas
- 2D
- Sin "basura-grafica" como 3d, sombras, demasiados colors, fondos coloreados, etc. Nada que distraiga
- Objetivo claro: Que es lo que responde la grafica
- Uso moderado de color. El color NO ES decorativo: Ej: Si quieres resaltar cual es el producto mas vendido, todas las columnas en gris y la mas vendida en color!.
- Las que vienen por defecto en Excel/Powerpoint son MAL EJEMPLO!

jeremiselxi 03-03-2015 18:59:28

Solamente puedo decir.

Excelente hermano.

Muchas gracias por tomar de tu tiempo para explicarme todo esto.

Saluditos:).


La franja horaria es GMT +2. Ahora son las 19:52:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi