对不起标题,但我的问题很难解释。
我有一张名为" TEL_LIST"用这个字段:
我有一行电话号码。状态可以是YES或NO。
我想计算状态为" NO"的总行数。 (不计算" YES"行)仅适用于至少有一个" YES"状态。
为了让你更好地理解,我想要这个:
修改
TEL:011, STATUS:YES
TEL:011, STATUS:NO
TEL:011, STATUS:NO
TEL:012, STATUS:NO
TEL:012, STATUS:NO
TEL:012, STATUS:NO
RESULT: 2.
TEL:011, STATUS:YES
TEL:011, STATUS:NO
TEL:011, STATUS:NO
TEL:012, STATUS:YES
TEL:012, STATUS:NO
TEL:012, STATUS:NO
RESULT: 4.
也许我没有解释清楚: 我想要所有" No"的总数(总和)。记录至少有一个"是"记录。
为了让您理解,我在联络中心工作。我希望所有负面呼叫(状态:否)的总数变为正数(状态:是)。
再次感谢你!
答案 0 :(得分:0)
使用Conditional Aggregate
计算值
select TEL,
count(case when STATUS = 'Yes' Then 1 end) AS Conditional_Count
from yourtable
Group by TEL
另一种方式是
SUM(case when STATUS = 'Yes' Then 1 ELSE 0 end)
更新:根据有问题的澄清
select count(case when STATUS = 'NO' Then 1 end) AS Conditional_Count
from yourtable
Having count(case when STATUS = 'YES' Then 1 end) > 0
答案 1 :(得分:0)
我认为这符合你的逻辑:
select tel,
(case when sum(status = 'Yes') = 0 then 0
else sum(status = 'No')
end)
from t
group by tel;
答案 2 :(得分:0)
我想也许这可以帮助我:
{{1}}
我试过这个解决方案,但我不确定结果是否正确......
答案 3 :(得分:0)
我会使用左连接和按查询分组:
select t1.tel, count(t2.tel) AS total_no
from
TEL t1 left join TEL t2
on t1.tel=t2.tel AND t1.status='Yes' AND t2.status='No'
group by
t1.tel
有关电话和状态的索引,表现应该是最佳的。 <= p>,不会返回任何状态=“是”的数字。
答案 4 :(得分:0)
试试这个:
选择x.Tel,count(distinct x.Number) 来自( select t.Tel,tmp.tel不为null的情况,然后Id else null以Number结尾 从yourtable t 左外连接( 选择电话 来自你的 where status ='是' )tmp on tmp.Tel = t.Tel 其中t.status ='不' ) X x.tel分组