none
Consultas con punto decimal y dos ceros (Duda) RRS feed

  • Pregunta

  • Que tipo de valor debo usar en una tabla sql y c# para poder realizar consultas de este tipo 1.00 10.56 55.80

    Ya que cuando pongo el tipo de dato decimal en sql y en c# al momento de introducir el 5.59 me lo redondea a 6.000000 y lo que quiero es que respete los decimales con dos puntos.

    introduzco datos de 1-100 con numeros 1.40, 5.20, 50.30 pero todo lo redonde y yo quiero que salgan el promedio de la suma de todas entas entre la cantidad y me devuelve por ejemplo   59.900000 y en los registros en ves de poner 50.30 redondea en este caso lo pone como 50.

    jueves, 14 de noviembre de 2019 15:13

Respuestas

  • Lo que me gustaría hacer con esta consulta:

    me regrese esto: 83.62 hay manera? o tengo que guardar el valor en una variable y a esa variable aplicar un substring aun que es mas tedioso :/ si se pudiera hacer desde sql estaría mejor.

    Prueba

    -- código #1
    SELECT round ((sum (DUAP) / count (distinct month (FECHA))), 2, 1) as MES
      from TOOL_CHANGE_INJECTION
      where UAP = 'UAP1';
     

    Sin embargo, debe tenerse en cuenta que si el valor de la fracción es cero, no se visualizan los dos decimales.


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Editado José Diz jueves, 14 de noviembre de 2019 21:23
    • Marcado como respuesta BlackCode23 jueves, 14 de noviembre de 2019 21:55
    jueves, 14 de noviembre de 2019 21:18
  • Listo ya logre hacer la consulta con la siguiente estructura:

    • Marcado como respuesta BlackCode23 jueves, 14 de noviembre de 2019 21:55
    jueves, 14 de noviembre de 2019 21:47

Todas las respuestas

  • declare @mydecimal decimal (10,2) = 5.59
    SELECT @mydecimal

    R = 5.59


    IIslas Master Consultant SQL Server

    jueves, 14 de noviembre de 2019 15:51
  • declare @mydecimal decimal (10,2) = 5.59
    SELECT @mydecimal

    R = 5.59


    IIslas Master Consultant SQL Server

    No quiero declarar variables, digamos que inserto los datos en la table con punto decimal pero al registrarlos los redondea y cuando quiero sacar el promedio de diferentes filas me deja el 56.000000

    jueves, 14 de noviembre de 2019 16:30
  • Que tipo de valor debo usar en una tabla sql  (...)  para poder realizar consultas de este tipo
    1.00 10.56 55.80

    Usted debe declarar la columna de la tabla como decimal(n, 2) donde n es el número máximo de dígitos del número. Por ejemplo, para almacenar 98765.87 debe declarar
                            decimal(7,2)

    Esto asegurará que los valores numéricos se almacenen con hasta 2 decimales.

    ---

    Además, el formateo final se realiza normalmente en la aplicación.

     


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    jueves, 14 de noviembre de 2019 16:59
  • cuando quiero sacar el promedio de diferentes filas me deja el 56.000000

    OJO, recuerda que los campos numéricos en las tablas y todos los cálculos que hagas con ellos no almacenan formato. Solo se salva el valor en binario que tenga el número, pero no queda guardado el número de decimales que quieres presentar. Eso lo hace el programa cliente que hace la llamada a la base de datos. Es este cliente el que decide cuántos decimales presentar. Si la consulta la haces desde SSMS, recuerda que a estos efectos SSMS es una aplicación cliente.
    jueves, 14 de noviembre de 2019 17:30
  • Fue para mostrarle graficamente como debe declarar su campo, saludos

    IIslas Master Consultant SQL Server

    jueves, 14 de noviembre de 2019 18:20
  • Lo que me gustaría hacer con esta consulta:

    me regrese esto: 83.62 hay manera? o tengo que guardar el valor en una variable y a esa variable aplicar un substring aun que es mas tedioso :/ si se pudiera hacer desde sql estaría mejor.

    jueves, 14 de noviembre de 2019 21:11
  • Lo que me gustaría hacer con esta consulta:

    me regrese esto: 83.62 hay manera? o tengo que guardar el valor en una variable y a esa variable aplicar un substring aun que es mas tedioso :/ si se pudiera hacer desde sql estaría mejor.

    Prueba

    -- código #1
    SELECT round ((sum (DUAP) / count (distinct month (FECHA))), 2, 1) as MES
      from TOOL_CHANGE_INJECTION
      where UAP = 'UAP1';
     

    Sin embargo, debe tenerse en cuenta que si el valor de la fracción es cero, no se visualizan los dos decimales.


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Editado José Diz jueves, 14 de noviembre de 2019 21:23
    • Marcado como respuesta BlackCode23 jueves, 14 de noviembre de 2019 21:55
    jueves, 14 de noviembre de 2019 21:18
  • Si era lo que estaba leyendo y buscando en otras partes pero no sabia como ponerlo a la consulta igual y echando a perder se aprende, muchas gracias vere si sale.
    jueves, 14 de noviembre de 2019 21:38
  • Lo que me gustaría hacer con esta consulta:

    me regrese esto: 83.62 hay manera? o tengo que guardar el valor en una variable y a esa variable aplicar un substring aun que es mas tedioso :/ si se pudiera hacer desde sql estaría mejor.

    Prueba

    -- código #1
    SELECT round ((sum (DUAP) / count (distinct month (FECHA))), 2, 1) as MES
      from TOOL_CHANGE_INJECTION
      where UAP = 'UAP1';
     

    Sin embargo, debe tenerse en cuenta que si el valor de la fracción es cero, no se visualizan los dos decimales.


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    bueno lo intente pero solo me deja .620000 solo quiero dejar el 83.62 :/


    • Marcado como respuesta BlackCode23 jueves, 14 de noviembre de 2019 21:55
    • Desmarcado como respuesta BlackCode23 jueves, 14 de noviembre de 2019 21:55
    jueves, 14 de noviembre de 2019 21:41
  • Listo ya logre hacer la consulta con la siguiente estructura:

    • Marcado como respuesta BlackCode23 jueves, 14 de noviembre de 2019 21:55
    jueves, 14 de noviembre de 2019 21:47
  • bueno lo intente pero solo me deja .620000 solo quiero dejar el 83.62 :/
     

    ¿El resultado fue de .620000 u 83.620000?

    ---

    Si en el resultado aparecen 6 decimales, es porque la expresión pasada como primer parámetro tiene 6 decimales. Al menos esto es lo que aparece en la documentación de la función ROUND().

    ROUND(x, 2, 1) trunca x, manteniendo los dos primeros decimales y poniendo 0 en el resto. Para mantener sólo los dos decimales, después del truncamiento, puede utilizar la función CAST.

    Algo como esto:

    -- código #1 v3
    SELECT cast (round ((sum (DUAP) / count (distinct month (FECHA))), 2, 1) as decimal(10,2)) as MES
      from TOOL_CHANGE_INJECTION
      where UAP = 'UAP1';




    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Editado José Diz jueves, 14 de noviembre de 2019 22:28
    jueves, 14 de noviembre de 2019 22:24