sql - 如何按周分组的列值计数计算百分比?

标签 sql pivot amazon-redshift average aggregate-functions

我有一个像这样的表格 View :

week    ColB    ColF
---------------------
45      1234    PART
45      8215    TEMP
45      2834    PART
45      4152    PART
45      5775    TEMP
45      6527    PART
45      1162    TEMP
45      9154    
45      2162    
46      4232    PART
46      3215    PART
46      5834    PART
46      6152    PART
46      7775    TEMP
46      8527    PART
46      9162    TEMP
46      2354    
46      2562    
46      9762    
...
...
...

现在每周我都需要做以下事情:

  • 每周总共有多少 PARTTEMP。我们称之为总计。在 ColF 中,除了 PARTTEMP 之外,我还可以有其他值,例如空字符串或任何其他值。我只需要计算 PARTTEMP 即可。
  • 每周有多少个 TEMP。我们称之为temp
  • 对于每周,将temp/total相除,得到百分比。

所以输出应该是这样的。基本上按周列分组。

week    ratio
---------------------
45      5.5%
46      4.3%
47      2.3%
48      1.7%

我正在尝试这样做,但不知何故没有完全理解如何实现上述结果?我的以下查询是错误的 -

select week, (SELECT week, count(*) FROM process WHERE ColF = 'TEMP' group by week) / count(*)
from process where ColF IN ('PART', 'TEMP')
group by week
order by week

这有可能做到吗?

最佳答案

您可以使用条件聚合。 avg() 可以方便地计算比率:

select week, avg(case when colf = 'TEMP' then 100.0 else 0 end) as ratio
from process 
where colf in ('PART', 'TEMP')
group by week

关于sql - 如何按周分组的列值计数计算百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64937569/

相关文章:

php - 插入查询检查记录是否存在 - 如果不存在,则将其插入

sql - Oracle 相当于 PostgreSQL INSERT...RETURNING *;

python - Pandas 相对时间轴

sql - 单独计算列中的值

amazon-web-services - 将数据从 Amazon Redshift 导出为 JSON

python - 从 python 将数据推送到 redshift 数据库时语句太大

sql - 如何在计算缺失周数的同时跟踪每周的增长

mysql - 创建mysql存储过程时出现1193错误

mysql - SQL/Knime - 带 "Group By"的转置表

sql - AWS Redshift 列限制?