none
¿Cómo Calcular el promedio de notas con porcentajes en sql?

    Question

  • Hola a todos, estoy trabajando con sql server 2008 y estoy tratando de sacar el promedio final de un listado de notas que muestro a continuación:


    donde debo mostrar el promedio de estas notas: la forma de sacar este promedio seria la siguiente, ya que cada nota tiene su porcentaje lo que se debe calcular es:

    valor = ponderacion / 100*nota

    ya que son 4 notas cada una tendrá un valor, y la suma de todos esos valores darán el promedio.

    La pregunta es ¿cómo podría hacer esto en una consulta SQL? 

    Saludos a todos

    Claudio.




    pregunta

    Thursday, June 20, 2013 3:58 PM

Answers

  • Cual version de SQL Server usas?

    En cuanto a tu pregunta, no se si te refieres a la formula o a la sumatoria del calculo.

    DECLARE @T TABLE (
    cod_cliente varchar(10),
    cod_asignatura varchar(15),
    nota int,
    ponderacion int
    );
    
    INSERT INTO @T (cod_cliente, cod_asignatura, nota, ponderacion)
    VALUES
            ('c1', 'AE-110-0', 55, 25),
            ('c1', 'AE-110-0', 25, 25),
            ('c1', 'AE-110-0', 28, 30),
            ('c1', 'AE-110-1', 60, 20);
    
    SELECT
        cod_cliente,
        cod_asignatura,
        nota,
        ponderacion,
        (ponderacion / 100.00) * nota AS c1,
        SUM((ponderacion / 100.00) * nota) OVER(PARTITION BY cod_cliente) AS avg_nota
    FROM
    	@T;
    
    SELECT
        cod_cliente,
        SUM((ponderacion / 100.00) * nota) avg_nota
    FROM
    	@T
    GROUP BY
    	cod_cliente;
    GO


    AMB

    Some guidelines for posting questions...

    Thursday, June 20, 2013 4:50 PM

All replies

  • No te sirve

    SELECT AVG(PONDERACION / 100 * NOTA) FROM Tabla

    ?

    Thursday, June 20, 2013 4:09 PM
  • no amigo no me saca el promedio con esa consulta. Al final lo solucione a nivel de código vb.net de la siguiente forma:

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
            Dim promedio As Integer
            Dim suma As Integer
            For x = 0 To DataGridView1.Rows.Count - 1
                Dim nota As Integer = DataGridView1.Rows(x).Cells(3).Value
                Dim porc As Integer = DataGridView1.Rows(x).Cells(4).Value
                promedio = (porc / 100) * nota
                suma = suma + promedio
                Label9.Text = Convert.ToString(suma)
            Next
        End Sub

    Saludos 


    pregunta

    Thursday, June 20, 2013 4:20 PM
  • Cual version de SQL Server usas?

    En cuanto a tu pregunta, no se si te refieres a la formula o a la sumatoria del calculo.

    DECLARE @T TABLE (
    cod_cliente varchar(10),
    cod_asignatura varchar(15),
    nota int,
    ponderacion int
    );
    
    INSERT INTO @T (cod_cliente, cod_asignatura, nota, ponderacion)
    VALUES
            ('c1', 'AE-110-0', 55, 25),
            ('c1', 'AE-110-0', 25, 25),
            ('c1', 'AE-110-0', 28, 30),
            ('c1', 'AE-110-1', 60, 20);
    
    SELECT
        cod_cliente,
        cod_asignatura,
        nota,
        ponderacion,
        (ponderacion / 100.00) * nota AS c1,
        SUM((ponderacion / 100.00) * nota) OVER(PARTITION BY cod_cliente) AS avg_nota
    FROM
    	@T;
    
    SELECT
        cod_cliente,
        SUM((ponderacion / 100.00) * nota) avg_nota
    FROM
    	@T
    GROUP BY
    	cod_cliente;
    GO


    AMB

    Some guidelines for posting questions...

    Thursday, June 20, 2013 4:50 PM
  • muchas gracias, respondió muy bien a lo que pedí... exelente!! 

    saludos cordiales.


    pregunta

    Thursday, June 20, 2013 5:10 PM