簡體   English   中英

SQL划分2列

[英]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
只需檢查null0的列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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM