[英]SQL divide 2 columns
我需要在SQL中計算人口密度。 我有一列人口,一列面積,但我不知道如何執行它,我得到除以零誤差。
這是我嘗試過的:
select name, population, gdp, area, [population]/[area] as pop_density
from country
group by name
order by gdp;
為什么需要group by
?
無需分組。
即使您確實需要group by
,也無法選擇非聚合列,例如:
population, gdp, area
。
只需檢查null
或0
的列area
:
select
name, population, gdp, area,
case coalesce(area, 0)
when 0 then null
else population / area
end as pop_density
from country
order by gdp
使用nullif()
:
select name, population, gdp, area,
population / nullif(area, 0) as pop_density
from country
order by gdp;
group by
似乎沒有必要。
nullif()
是一個標准函數,當傳入的兩個值相等時會返回NULL
。 如果您的數據庫不支持它,則可以使用case
表達式執行相同的操作。
只需在where clause as
添加where clause as
select name, population, gdp, area,
[population]/[area] as pop_density
from country where area
NOT IN (NULL,0) group by name
order by gdp
或者,您可以通過Case
Statements處理除數區域的值0。
.......Case when Area IN (Null,0)
then 0
else
[population]/[area]
select name, population, gdp, area, [population]/[area] as pop_density
from country
where area is not null and area is not 0
group by name
order by gdp;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.