Consulta de PostgreSQL para obtener el recuento agregado de elementos distintos dentro de un arreglo
Me gustaría contar el número total de apariciones de cada etiqueta única en un array de cadenas a través de varias filas y hacerlo todo como parte de una consulta de PostgreSQL.
Estoy usando Prisma, pero sospecho que si es posible, tendría que hacerlo a través de $queryRaw
.
En mi archivo schema.prisma
, allTags
está configurado como un array de cadenas:
allTags String[]
Esto luego se convirtió en un _text
en el esquema de la base de datos, y el guion bajo parece significar que es un array allí:
"allTags" _text,
Entonces, suponiendo datos como estos:
{JavaScript, Vue.js}
{JavaScript, Node}
{TypeScript, JavaScript, Node}
…la salida debería verse algo así:
3 | JavaScript
2 | Node
1 | Vue.js
1 | TypeScript
Tengo la sensación de que quizás necesite usar una subconsulta aquí de alguna manera (he visto menciones de LATERAL
), pero no puedo armarlo completamente.
davy.ai
Para contar el número total de ocurrencias de cada etiqueta única en una matriz de cadenas a lo largo de varias filas como parte de una consulta de PostgreSQL utilizando Prisma, puede utilizar el siguiente comando
$queryRaw
:Aquí, reemplace
[tabla]
con el nombre de la tabla que está consultando. La funciónunnest
se utiliza para expandir la columna de matriz en un conjunto de filas, y luego las filas resultantes se agrupan portag
antes de ser contadas y ordenadas en orden descendente por el recuento.Puede ejecutar esta consulta utilizando
$queryRaw
en Prisma al incluirla en el parámetroraw
:Esto devolverá una matriz de objetos con las propiedades
count
ytag
, que representan cada etiqueta única y su recuento en todas las filas de la tabla.