![]() |
Obtener decimales calculando porcentajes
Hola.
quiero hacer una consulta en la que se calcula el porcentaje de respuestas SI, NO y SIN respuesta en un cuestionario. Utilizo los campos RESP_SI, RESP_NO y RESP_sin y el de total de respuestas TOT_PREGUNTAS. Los 4 campos son integer. La sentencia que uso es:
Todo funciona bien, excepto que los valores que devuelve de las operaciones son valores enteros, lo que produce normalmente que la suma de los 3 porcentajes sea 98 ó 99, raramente 100, porque redondea a la baja y, un 27,55 lo convierte en 27. La pregunta es: ¿Hay alguna forma de obtener los resultados en la consulta con decimales?. ¿Cómo sería?. Uso Firebird 2.0. Gracias de antemano. |
Puedes probar con cast, transformando a tipo NUMERIC ó DECIMAL.
|
Hola Axel_Tech.
Gracias por tu propuesta. Ha funcionado parcialmente. Si la operación es entre el valor de un campo y un número constante, funciona bien (utilicé NUMERIC, DECIMAL, FLOAT y REAL, aunque no da decimales con todos estos tipos). Pero no funciona con decimales en el resultado (aunque sí funciona devolviendo valores enteros) si se realiza una operación (como dividir) entre los valores de 2 campos (que son integer). De ayer a hoy he buscado otra vía para resolverlo (sin usar SQL) y, aunque me interesa a nivel de curiosidad y de aprender, he dejado de necesitarlo de forma inmediata. Sin embargo, si alguien sabe como hacerlo (si se puede hacer, claro), creo que sería una buena aportación el que compartiera su solución en este hilo, para cualquier otra persona del foro que pueda necesitarlo. Gracias. |
Hola de nuevo.
Hice una prueba usando campos tipo FLOAT y funcionó bien, dando decimales. Así que debe ser suficiente con que los campos que entren en la operación que se realiza en el SELECT sean de tipo FLOAT. Saludos. |
Ojo que cuando muestres ese dato tre saldra con una gran cantidad de decimales, si quieres mostrar solo un decimal debes hacer lo siguiente en el SELECT
Select Round(promedio,1) as variableamostrar Esto te permitira obtener del campo promedio que es de tipo FLOAT solo un decimal en la visualizacion. Saludos Alejandro Arancibia CHILE |
Gracias Alejandro.
Interesante ese ROUND, aunque no lo pude usar en Firebird 2.0. Saludos. |
La franja horaria es GMT +2. Ahora son las 20:45:19. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi