Agrupar por¶
Em SQL, o GROUP BY
instrução é usada com funções agregadas (COUNT()
, MAX()
, MIN()
, SUM()
, AVG()
) para agrupar as linhas resultantes por uma ou mais colunas. Este artigo explicará como usar GROUP BY
na Camada de Negócios do Vinyl.
Etapa 1: Crie uma Subconsulta¶
Para alavancar GROUP BY
no Vinyl, primeiro você precisará criar uma Subconsulta objeto que fornece uma função agregada. A regra Subconsulta também deve especificar as colunas que você deseja GROUP BY
. Se você estiver familiarizado com SQL, poderá confirmar a subconsulta GROUP BY
lógica visualizando a aba SQL disponível na tela Regra na camada de negócios.
Exemplo de Regra de Subconsulta¶
Neste exemplo, criaremos uma regra de Subconsulta chamada Cliente (Agrupar por Subconsulta) que tem como alvo a tabela Cliente. Esta regra fornecerá um COUNT()
função agregada e incluir as colunas que queremos GROUP BY
, que são CustomerID e ProductName.
Visualização da aba Colunas:
Visualização da aba SQL:
SELECT
C.ProductName AS ProductName,
Count(1) AS Count,
C.CustomerID AS CustomerID
FROM
Customer AS C
GROUP BY
C.ProductName,
C.CustomerID
Etapa 2: Associar a Subconsulta a um Objeto de Negócios¶
Depois de ter uma Subconsulta com uma função agregada, junte a Subconsulta a um Objeto de Negócios. Depois que o Business Object for criado, você poderá usá-lo para Publicar na camada UI e expor os dados e informações resultantes em uma página do aplicativo.
Exemplo de Regra de Objeto de Negócios¶
Seguindo o exemplo da Subconsulta, iremos unir o Cliente (Grupo por Subconsulta) à tabela Cliente e estabelecer uma junção utilizando o campo chave comum entre os dois objetos, que neste cenário é CustomerID.
Visualização da aba Tabelas:
Visualização da aba SQL:
SELECT
C.CustomerID AS CustomerID,
C.ProductName AS ProductName,
C.OrderDate AS OrderDate
FROM
"Customer (Group By Subquery)" AS CGBS
INNER JOIN
Customer AS C ON
( (CGBS.CustomerID = C.CustomerID ) )