为什么双冒号在案例陈述中不起作用

时间:2019-04-18 05:16:10

标签: amazon-athena

我想用“ ::'(此字符)标记主机名以将其标记为云,然后将所有内容都保留为” not cloud”。

我尝试使用like运算符,它不起作用,我的结果将所有主机名都标记为不云

select a.department, count(host_name),
(CASE
   WHEN host_name like '%::%' THEN 'Cloud'
   ELSE 'Not cloud'
END) as cloud_instance
from 
table a

预期输出: 如果我的主机名中包含此表达式'::',则它应显示为cloud。

1 个答案:

答案 0 :(得分:0)

您当前的查询没有意义,因为它会调用COUNT()函数(表级函数)以及各个行级列。我怀疑这是您要尝试做的事情:

SELECT
    a.department,
    COUNT(a.host_name) AS dept_cnt,
    COUNT(CASE WHEN a.host_name LIKE '%::%' THEN 1 END) AS cloud_cnt,
    COUNT(CASE WHEN a.host_name NOT LIKE '%::%' THEN 1 END) AS no_cloud_cnt
FROM yourTable a
GROUP BY
    a.department;

在这里,我们按部门进行汇总,然后得出每个部门的总数,云和非云计数。