sql - SQL划分2列
问题描述
我需要在 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
推荐阅读
- sql - 选择每个地址居住人数的查询是什么?
- laravel - 将 Cart::content 发送到 Laravel 5.8 中的刀片
- javascript - 发送到控制器时,Ajax 发布数据为空
- ruby-on-rails - 用于匹配 Ruby 中的 img 标签的正则表达式
- symfony - 如何在奏鸣曲中设置闪光成功消息
- java - 如何使用java在csv文件中写入标题和记录作为响应
- git - 如何使用 jenkins 修改 git -commit 消息?
- typescript - 页面大小和记录数不匹配 - 角度 6
- pandas - 如何为 pandas DataFrame 的子集分配一个常量?
- excel - 如何在 Excel 中将包含单选按钮的单元格设置为 ActiveCell