1. ホーム
  2. sql

[解決済み] PostgreSQL - json 型の等値演算子を識別できませんでした。

2022-02-05 02:14:53

質問

次のようなクエリがあります。

SELECT 
  distinct(date(survey_results.created_at)), 
  json_build_object(
    'high', 
    ROUND( 
      COUNT(*) FILTER (WHERE ( scores#>>'{medic,categories,motivation}' in('high', 'medium'))) OVER(order by date(survey_results.created_at) ) * 1.0 / 
      (
        CASE (COUNT(*) FILTER (WHERE (scores#>>'{medic,categories,motivation}' in('high','medium','low'))) OVER(order by date(survey_results.created_at))) 
        WHEN 0.0 THEN 1.0 
        ELSE (COUNT(*) FILTER (WHERE (scores#>>'{medic,categories,motivation}' in('high','medium','low'))) OVER(order by date(survey_results.created_at))) 
        END)* 100, 2 ) ) AS childcare FROM survey_results GROUP BY date, scores ORDER BY date asc; 

を使用した場合の問題点です。 distinct(date(survey_results.created_at)) . このままでは、クエリがエラーを返します。

could not identify an equality operator for type json

以下は、その問題を示すdbフィドルです。

https://www.db-fiddle.com/f/vUBjUyKDUNLWzySHKCKcXA/1

どうすれば直るのでしょうか?

どのように解決するのですか?

使用方法 jsonb_build_object . 注目すべきは b の後にバイナリ用 json .