计数功能和案例

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,每个都有一个阶段

以上是关于计数功能和案例的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript计数器+classList使用-纯js案例:全选反选

Python 2352周存钱挑战3.0(循环计数for)

计数,拥有和案例陈述

跨案例选择不同计数

尝试更新包含聚合函数(计数)的选择案例语句时出错

案例:计数器