Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como calcular porcentagem com uma instrução SQL


  1. O mais eficiente (usando over()).
    select Grade, count(*) * 100.0 / sum(count(*)) over()
    from MyTable
    group by Grade
    

  2. Universal (qualquer versão SQL).
    select Grade, count(*) * 100.0 / (select count(*) from MyTable)
    from MyTable
    group by Grade;
    

  3. Com CTE, o menos eficiente.
    with t(Grade, GradeCount) 
    as 
    ( 
        select Grade, count(*) 
        from MyTable
        group by Grade
    )
    select Grade, GradeCount * 100.0/(select sum(GradeCount) from t)
    from t;