计数功能和案例
Posted
技术标签:
【中文标题】计数功能和案例【英文标题】:Count function and Case 【发布时间】:2019-07-19 00:57:57 【问题描述】:计算第 1-8 阶段应计为 SAL 的机会数量,但我只想将第 3-7 阶段过滤为 SQL。
尝试了 case 语句并在子查询中计数,但它不起作用。代码如下:
SELECT camp, count(opp_id) as sal,
count(opp_id (select opp_id from db.opp_data_q3 where stage not in ("01", "02")) as sql,
from db.opp_data_q3
where created_quarter = "Q3"
group by camp;
预期结果:
Camp A | SAL 10 | SQL 5
Camp B | SAL 20 | SQL 3
实际结果是一条错误消息:
编译语句时出错:FAILED: ParseException line 2:14 cannot identify input near 'select' 'opp_id' 'from' in function specification
【问题讨论】:
【参考方案1】:我认为您只需要条件聚合:
select camp, count(*) as sal,
sum(case when stage not in ('01', '02') then 1 else 0 end) as sql
from db.opp_data_q3
where created_quarter = 'Q3'
group by camp;
【讨论】:
不,这对我不起作用,仍然返回错误:编译语句时出错:FAILED:SemanticException [错误 10011]:第 3:32 行无效函数 'opp_id' 查询中没有任何东西被称为opp_id
,所以这是一个非常奇怪的错误。
不,在我的新查询中,我使用了下面的第一个建议,错误是上面的 >> SELECT camp, count(opp_id) as sal, count(opp_id (case when stage not in (" 01", "02") then 1 else 0 end)) as sql from db.opp_data_q3 where created_quarter = "Q3" group by camp;
opp_id 是表中的>>db.opp_data_q3,我想计算(不是总和),因为它就像订单ID,每个都有一个阶段以上是关于计数功能和案例的主要内容,如果未能解决你的问题,请参考以下文章