簡體   English   中英

計算PostgreSQL 9.5中兩列的總和

[英]calculate sum of two columns in PostgreSQL 9.5

我有一個帖子表,每個帖子都有一個洞察力jsonb列,其中包含類似下面的數據示例。

數據樣本(來自Facebook,因此無法更改格式)

[
  {
    "name": "post_story_adds_unique",
    "values": [
      { "value": 93 }
    ],
  },
  {
    "name": "post_story_adds",
    "values": [
      {  "value": 100 }
    ]
  },
  {
    "name": "post_impressions_organic_unique",
    "values": [
      {  "value": 123 }
    ]
  },
  ...
]

我希望計算出觸及范圍病毒的總和,然后按總數排序。

期望的結果

id  message                       post_created          reach   viral   total
69  This World Family dablah...   2016-05-11 18:44:16   6683    646     7329
...

到目前為止,我設法得到了結果,但我無法弄清楚如何得到兩列的總和。 我不知道在哪里添加另一個連接或選擇將兩列相加。

結果到目前為止

id  message                       post_created          reach   viral
69  This World Family dablah...   2016-05-11 18:44:16   6683    646
58  blah blah flip flop blah...   2016-05-22 11:00:01   4880    403
55  This is another message ...   2016-05-24 10:00:00   4417    109

我已嘗試過各種方法,例如在第一個SELECT包含SUM (reach + viral) as total ,但大多數時候我都會回到錯誤,說列不存在。

到目前為止,我的SQL是:

SELECT
    id,
    message,
    post_created,
    obj.value->'values'->0->'value' AS reach,
    obj2.value->'values'->0->'value' AS viral
  FROM (
    SELECT
      id,
      message,
      post_created,
      insights
    FROM posts
    WHERE (
      page_id = 4 AND
      post_created >= '2016-05-01 00:00:00' AND
      post_created <= '2016-05-31 23:59:59' AND
      insights @> '[{"name":"post_impressions_organic_unique"}, {"name":"post_impressions_viral_unique"}]'
    )
  ) e1
  JOIN LATERAL jsonb_array_elements(insights) obj(value) ON obj.value->>'name' = 'post_impressions_organic_unique'
  JOIN LATERAL jsonb_array_elements(insights) obj2(value) ON obj2.value->>'name' = 'post_impressions_viral_unique'
  ORDER BY reach DESC;

要做到這一點,你需要像這樣更新你的表:

UPDATE yourTable SET resultsRow = firtRow + secondRow;

不確定jsonb是否會產生任何影響,但是,添加兩列的值就像使用+一樣簡單

create table foo(a integer,b integer);
insert into foo values (3,4);
select *, a+b as total from foo;

 a | b | total 
---+---+-------
 3 | 4 |     7
(1 row)

暫無
暫無

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

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