【发布时间】:2020-11-21 01:41:26
【问题描述】:
我有一个这样的表格视图:
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。我们称之为total。在ColF中,除了PART和TEMP之外,我还可以有其他值,例如空字符串或任何其他值。我只需要计算PART和TEMP。 - 每周有多少
TEMP。我们称之为temp。 - 对于每周,将
temp/total相除,得到result的小数点后三位。如果result为 0,那么它应该只显示 0。
所以输出应该是这样的。基本上按周列分组。
week ratio
---------------------
45 0.054
46 0.345
47 0.224
48 0.456
所以我尝试了这样,它完成了工作,但是我需要先计算百分比然后除以 100 才能得到我需要的吗?我确实认为这可以改进,所以我不应该先计算百分比。我应该能够在不做百分比的情况下得到结果。
select week, (avg(case when colf = 'TEMP' then 100.0 else 0 end) / 100 ) as ratio
from process
where colf in ('PART', 'TEMP')
group by week
这有可能吗?
【问题讨论】:
标签: sql amazon-redshift aggregate-functions