次のクエリを実行しようとすると、postgres error: division by zero
になります。
select
request_count,
response_count,
(response_count*100) / (request_count+response_count) AS proportion
from total_dummy_table;
division by zero
エラーを回避して解決するにはどうすればよいですか?
以下のクエリを使用して修正しようとしましたが、上記と同じ結果が得られました
SELECT
request_count,
response_count,
(response_count*100) / (request_count) AS proportion
FROM
total_dummy_table
ORDER BY
(response_count*100) /(CASE request_count WHEN 0 Then NULL ELSE request_count END) DESC NULLS FIRST
どこが間違っているのか、またはどうすれば修正できますかを教えてください。ありがとう!
結果の期待:
クエリは次のようなものを返すはずです:
Request_count | Response_count | Proportion
1603423 | 585706 | 36.52
クイックノート:テーブルtotal_dummy_tableには、比率を計算した結果への追加である列名proportion
がありません。
select request_count,response_count,
case
when
request_count+response_count = 0 then 0
else
(response_count*100) / (request_count+response_count)
end AS proportion
from total_dummy_table;
nULLIFを使用する
_something/NULLIF(column_name,0)
_
NULLIF(col,val)
はの省略形です
_CASE WHEN col=val THEN NULL ELSE col
_