私のテーブルでjsonbフィールドに特定のクエリを実行しようとしていますが、最終出力をintとして取得するのに問題があります。 以下の形式のJSONBフィールドとして各行を想定し、各製品の注文総数を取得したいと考えています。これによりJSONBフィールドの値の集約
select key as product, value::json->'orders'->'total' as total
from table, jsonb_each_text(json_field)
group by key, value;
私は製品によって合計を取得することができるよ::
product | total
Product A | 10
Product B | 15
Product C | 0
合計がjsonbフィールドであるようだが、私は、クエリをやった
{
"Product A": {
"orders": {"total": 2, "stuff": 3}
"..."
},
{
"Product B": {
"orders": {"total": 1, "stuff": 1}
"..."
},
{
"Product C": {
"orders": {"total": 5, "stuff": 0}
"..."
}
}
私は(value :: json - > 'orders' - > 'total'):: numericを使用しようとしましたが、キャストはできません。あなたは助けてもらえますか?
私は最終的にそれを行うことができました
あなたは 'jsonb_each(json_field)'と '値使用する必要があります - > 'の順序' を - >>合計。あなたは数値にキャストできます(しかし、そのフィールドが本当にどこでもJSON番号である場合のみ)。 – pozs
クール。ありがとうございました。 – absg