簡體   English   中英

如何使用 SQL 在 jsonb 數組中聚合值

[英]How can I aggregate values inside a jsonb array using SQL

我的數據看起來像這樣:

                    tags                      |                 fullName
----------------------------------------------+------------------------------------------
 ["tag1", "tag2"]                             | John
 ["tag3", "tag1"]                             | Jane
 ["tag1", "tag3"]                             | Bob
 

tags 是jsonb類型,fullName 是 postgres 數據庫中的text

我正在努力做的是,創建一個視圖,如

                    tags                      |                 count
----------------------------------------------+------------------------------------------
 tag1                                         | 3
 tag2                                         | 1
 tag3                                         | 2
 

在分組和計數之前,您可以使用jsonb_array_elements函數將行擴展為數組元素。

請參閱下面的示例和工作小提琴。

    SELECT
        tag_names as tag,
        COUNT(1) as count
    FROM (
        SELECT
            jsonb_array_elements(tags) as tag_names
        FROM
            my_table
    ) t
    GROUP BY tag_names;
標簽 數數
標簽 1 3
標簽2 1
標簽3 2

在 DB Fiddle 上查看

或更短

SELECT
   jsonb_array_elements(tags) as tag,
   COUNT(1) as count
FROM
   my_table
GROUP BY 
   tag

在 DB Fiddle 上查看

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM