ОШИБКА: деление на ноль + PostgreSQL + Rails - PullRequest
0 голосов
/ 17 января 2020

enter image description here

Я получаю следующую ошибку при запуске этого представления базы данных в psql (ОШИБКА: деление на ноль). Даже я не могу получить доступ к своей таблице в консоли rails. Если у кого-то есть решение этой ошибки, пожалуйста, прокомментируйте, это будет очень полезно заранее.

select 
      (exam_id || '00' || quarter)::bigint as id,
      account_id,
      exam_id,
      quarter,
      quarter_label,
      count(id) as assessments,
      max(banding_percentage) as top_assessment_percentage,
      min(banding_percentage) as bottom_assessment_percentage,
      round(avg(banding_percentage),2) as avg_assessment_percentage
    from report_assessments
    group by account_id, exam_id, quarter, quarter_label;

Ответы [ 2 ]

2 голосов
/ 17 января 2020

Чтобы избежать появления исключений division by zero, вы должны использовать nullif, чтобы вы могли поймать это 0 и заменить его на null, например

WITH j (v1,v2) AS (
  VALUES (1.0,0.0),(10.0,3.0)
) 
SELECT v1/nullif(v2,0) AS div FROM j;

        div         
--------------------

 3.3333333333333333
(2 Zeilen)
0 голосов
/ 17 января 2020

Вам нужно сделать что-то подобное. Это работает в моем случае:

Negotiation.find(
  :all, 
  conditions: conditions_hash('negotiation'),
  select: 
    'CASE 
      sum(banding_percentage) 
      WHEN 
        0 
      THEN 
        NULL 
      ELSE 
        sum(total_percentage) / sum(banding_percentage) 
      END as error_check'
).first
...