如何解决Amazon Athena SQL查询无法产生所需结果-占总数的百分比
我在雅典娜(Athena)尝试过此操作,但我相信它也是一种适当的SQL查询。
我有一个带有channel
列的表,我想获得“每月的渠道份额从渠道总数中等于1”。因此,我考虑使用条件语句,将1设为1时置1,否则置0,然后将其求和,这就像将1的出现次数除以一个月的总次数一样。
但这只是零,而不是实际份额。查询出了什么问题?
select
month,count(),sum(case when channel = 1 then 1 else 0 end) / count()
from table
where bla bla
group by 1 order by 1;
解决方法
您的问题可能是整数除法。这是两种方法:
Select month,count(*),sum(case when channel = 1 then 1.0 else 0 end) / count(*)
from table
where bla bla
group by 1
order by 1;
Select month,count(),avg(case when channel = 1 then 1.0 else 0 end)
from table
where bla bla
group by 1
order by 1;
请注意,avg()
是进行此计算的更简单方法。
虽然其他建议的解决方案都可以正常工作,但我想在此提出一个不太冗长的替代方案:
class Logger2(object):
def __init__(self):
self.terminal = sys.stderr
def write(self,message):
self.terminal.write(message)
Output2.write(message)
def flush(self):
pass
os.makedirs(os.path.dirname(Output_dir))
Output = open(Output_dir + 'output.txt',"w")
Output2 = open(Output_dir + 'error.txt',"w")
sys.stdout = Logger()
sys.stderr = Logger2()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。