我想用“ ::'
(此字符)标记主机名以将其标记为云,然后将所有内容都保留为” 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。
答案 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;
在这里,我们按部门进行汇总,然后得出每个部门的总数,云和非云计数。