作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要获取百分比但不能使用 WHERE 子句,因为它是大型 SQL 查询的一部分。
我尝试这样做:
select (count(sector='Rurality'))/(count(sector))*100 as test from study
但第一次计数得到的是完整结果而不是过滤。
换句话说,这是行不通的:
select COUNT(sector='Rurality') AS test FROM study;
也许有人有什么想法?问题是过滤器在所有这一切之后都粘在了 SQL 查询上,但不能添加 WHERE sector="rurality"。
最佳答案
这就是FILTER
用于:
select count(*) filter (where sector = 'Rurality') test from study;
对于较旧的 PostgreSQL,您可以使用 CASE
构造,但不要忘记省略 ELSE
子句以不计算 NULL
值:
select count(case sector when 'Rurality' then 1 end) test from study;
此外,bigint
/bigint
将是 bigint
,因此请使用强制转换和/或圆括号,或者重新构造您的公式,例如:
select 100.0 * count(*) filter (where sector = 'Rurality') / count(sector) test
from study;
关于sql - PostgreSQL : Percentage without a WHERE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41722675/
我是一名优秀的程序员,十分优秀!