web-dev-qa-db-ja.com

PostgreSQLでゼロ除算エラーを与えるクエリ

次のクエリを実行しようとすると、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がありません。

11
AKIWEB
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;
11
Houari

nULLIFを使用する

_something/NULLIF(column_name,0)
_

NULLIF(col,val)はの省略形です

_CASE WHEN col=val THEN NULL ELSE col
_
26