private static IProjection ProjectionOperacaoAtivoGroupingQueryModel()
        {
            OperacaoAtivoGroupingQueryModel queryModel = null;

            IProjection projectionQuantidade = Projections.Property <Operacao>(operacao => operacao.Quantidade);

            IProjection projectionPreco = Projections.Property <Operacao>(operacao => operacao.Preco);

            IProjection projectionQuantidadeVezesPreco = Projections.SqlFunction
                                                         (
                function: new VarArgsSQLFunction("(", "*", ")"),
                type: NHibernateUtil.Double,
                projectionQuantidade, projectionPreco
                                                         );

            IProjection projectionSumOfQuantidadeVezesPreco = Projections.Sum(projectionQuantidadeVezesPreco);

            IProjection projectionSumOfQuantidade = Projections.Sum(projectionQuantidade);

            IProjection projectionPrecoMedio = Projections.SqlFunction
                                               (
                function: new VarArgsSQLFunction("(", "/", ")"),
                type: NHibernateUtil.Double,
                projectionSumOfQuantidadeVezesPreco, projectionSumOfQuantidade
                                               );

            return(Projections
                   .ProjectionList()
                   .Add(Projections.Group <Operacao>(operacao => operacao.Ativo).WithAlias(() => queryModel.Ativo))
                   .Add(projectionSumOfQuantidade.WithAlias(() => queryModel.SomaDasQuantidades))
                   .Add(projectionPrecoMedio.WithAlias(() => queryModel.PrecoMedio))
                   );
        }