Sql 如何按列值计数按周分组计算百分比?
我有这样一个表视图:Sql 如何按列值计数按周分组计算百分比?,sql,pivot,amazon-redshift,average,aggregate-functions,Sql,Pivot,Amazon Redshift,Average,Aggregate Functions,我有这样一个表视图: 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
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
...
...
...
现在,每周我都需要做以下事情:
- 每周总共有多少个
和PART
。让我们称之为总计。在TEMP
中,除了ColF
和PART
之外,我还可以有其他值,比如空字符串或任何其他值。我只需要数数零件和温度TEMP
- 每周有多少名
。让我们称之为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
我看不出您在上述查询中使用的是
avg
?还是我误解了?@AndyP:对不起,错别字修正了。