基于 postgres 中的布尔值计数的每行平均值
average per row based on a boolean value count in postgres
是否可以找到按某些条件分组的列中多行的平均值,但平均值不是数值,实际上它是特定布尔条件下的另一个计数:
select count(commit) from table_x where contains_bug = 'True' group by project name_name;
这将 return 每个项目的风险提交数。
select count(commit) from table_x group by project name_name;
这将 return 每个项目的提交总数
我试图通过以下方式找到每个项目的平均风险提交:
Select AVG(select count(commits)from table_x where contains_bug = 'True') group by project_name;
没用
谢谢
终于找到答案了:)
select project_name, to_char(count(nullif(contains_bug = 'True', false))/count(*)::float*100, '99.99') as percentage from table_x group by project_name;
可以使用AVG(但需要先CAST到INT):
SELECT AVG(CAST(contains_bug = 'True' AS int)) FROM table_x GROUP BY project_name;
是否可以找到按某些条件分组的列中多行的平均值,但平均值不是数值,实际上它是特定布尔条件下的另一个计数:
select count(commit) from table_x where contains_bug = 'True' group by project name_name;
这将 return 每个项目的风险提交数。
select count(commit) from table_x group by project name_name;
这将 return 每个项目的提交总数
我试图通过以下方式找到每个项目的平均风险提交:
Select AVG(select count(commits)from table_x where contains_bug = 'True') group by project_name;
没用
谢谢
终于找到答案了:)
select project_name, to_char(count(nullif(contains_bug = 'True', false))/count(*)::float*100, '99.99') as percentage from table_x group by project_name;
可以使用AVG(但需要先CAST到INT):
SELECT AVG(CAST(contains_bug = 'True' AS int)) FROM table_x GROUP BY project_name;