Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL计数操作_Sql_Postgresql - Fatal编程技术网

SQL计数操作

SQL计数操作,sql,postgresql,Sql,Postgresql,我有两个查询使用同一个表:total,我需要计算结果的百分比。(博士后9.4) 例如: Total count no筛选器返回100行 字段1为False的总计返回10行 我需要得到10%,即满足特定条件的百分比。100/10 在SQL中,在这种情况下计算它的最佳方法是什么 SELECT * FROM ( SELECT COUNT(*) FROM total / SELECT COUNT(*) FROM total WHERE field1 = False ) 您可以使用case表达式使

我有两个查询使用同一个表:total,我需要计算结果的百分比。(博士后9.4)

例如:

  • Total count no筛选器返回100行
  • 字段1为False的总计返回10行
我需要得到10%,即满足特定条件的百分比。100/10 在SQL中,在这种情况下计算它的最佳方法是什么

SELECT * FROM (
SELECT COUNT(*) FROM total /
SELECT COUNT(*) FROM total WHERE field1 = False ) 
您可以使用case表达式使用条件聚合


您可以使用case表达式使用条件聚合

如果
field1
列是
BOOLEN
类型,还有另一种很酷的方法

您可以像这样使用
SUM
函数

SELECT SUM((NOT field1)::INT) * 100/SUM(1) percentage 
FROM total

sqlfiddle:

如果
field1
列是
BOOLEN
类型,还有另一种很酷的方法

您可以像这样使用
SUM
函数

SELECT SUM((NOT field1)::INT) * 100/SUM(1) percentage 
FROM total
SQLFIDLE:

我会这样做:

select avg(case when field = false then 100.0 else 0 end) as percentage
from total;
假设
字段
不是
,您还可以执行以下操作:

select avg( (not field)::int ) * 100 as percentage
from total;
我会这样做:

select avg(case when field = false then 100.0 else 0 end) as percentage
from total;
假设
字段
不是
,您还可以执行以下操作:

select avg( (not field)::int ) * 100 as percentage
from total;

小心整数除法。小心整数除法。