通过不同列中的特定值进行计数

时间:2018-09-17 18:45:18

标签: sql function group-by

b>=0

我要达到的目的是,每当我在状态列中仅通过发件人ID获得“聊天”值一次时,并且在处理列中对于相同的发件人ID,“结束状态”值的计数为零计数该发件人ID并显示这些发件人ID的输出。我期望下面的输出:有人可以帮忙吗?

输出
仅具有一个聊天状态且没有结束状态进程2的不同注册ID的计数

仅具有一个聊天状态且没有结束状态处理的唯一寄存器ID 104 106

1 个答案:

答案 0 :(得分:0)

如果我正确理解的话,您需要这样做:

select RegisterID 
from your_table
group by RegisterID
having 
sum(case when Status='chat' then 1 end) = 1
and
sum(case when Process = 'end state' then 1 else 0 end) = 0

或者,如果您需要计算列表中RegisterID的插入次数,则:

select count(*) from (
    select RegisterID 
    from your_table
    group by RegisterID
    having 
    sum(case when Status='chat' then 1 end) = 1
    and
    sum(case when Process = 'end state' then 1 else 0 end) = 0
) t