1
resposta

Group by count

Olá como faço para retornar por exemplo a quantidade por status?

Faria dessa forma com SQL:

SELECT STATUS, COUNT(*) AS COUNT FROM ITEMS
GROUP BY STATUS
Result:
| STATUS | COUNT | 
| A            | 3  
| B            | 5     
| C            | 1
1 resposta

Olá João! Tudo bem com você?

Peço desculpa pela demora para responder o seu tópico.

Para retornar a quantidade por status utilizando GraphQL, você pode seguir os seguintes passos:

1 - Primeiro, defina o schema do GraphQL com o tipo de dado que representa a quantidade por status. Por exemplo:

type StatusCount {
  status: String
  count: Int
}

2 - Em seguida, defina a query que irá retornar a quantidade por status. Por exemplo:

type Query {
  statusCounts: [StatusCount]
}

3 - Implemente a resolução da query no resolver. Você pode utilizar a lógica que você já conhece em SQL para contar os registros por status e retornar os resultados. Por exemplo:

const resolvers = {
  Query: {
    statusCounts: () => {
      // Lógica para contar os registros por status e retornar os resultados
      const items = [
        { status: 'A' },
        { status: 'A' },
        { status: 'A' },
        { status: 'B' },
        { status: 'B' },
        { status: 'B' },
        { status: 'B' },
        { status: 'B' },
        { status: 'C' }
      ];

      const counts = {};

      items.forEach(item => {
        if (counts[item.status]) {
          counts[item.status]++;
        } else {
          counts[item.status] = 1;
        }
      });

      return Object.keys(counts).map(status => ({
        status,
        count: counts[status]
      }));
    }
  }
};

4 - Agora, você pode executar a query statusCounts para obter a quantidade por status. Por exemplo:

query {
  statusCounts {
    status
    count
  }
}

Dessa forma você conseguirá obter um resultado parecido com a query que você comentou. Contudo, o exemplo que dei deve ser adequado para o seu projeto, você deve realizar os ajustes tanto na parte das querys do GraphQL, quanto no código do resolvers.

Espero ter ajudado. Caso tenha mais dúvidas ou problemas, relacionados com esse tópico, estarei à disposição para ajudá-lo.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.