----------------------------------------
|transaction_id|customer_id|month|value|
----------------------------------------
我正在寻找一个SQL查询,该查询将返回在10月份而非11月份拥有更多交易的客户的客户ID,或者仅返回11月份交易(10月份没有交易)的客户的客户ID。月份列的类型为字符串(不是日期)
我在考虑内部联接可以做到这一点,但过去我不知道如何解决这个问题。
这就是我的尝试
select customer_id
from tbl_name
where (select count(month is 'October') > count(month is 'November') from tbl_name)
谢谢
答案 0 :(得分:0)
你计算记录。所以你聚合。您希望每个customer_id计数。所以你分组 customer_id。你在查询中忘记了这一点。
然后你要比较HAVING
条款中的计数,即在计算了10月和11月的记录之后。
select customer_id
from tbl_name
where month in ('October', 'November')
group by customer_id
having count(case when month = 'October' then 1 end) >
count(case when month = 'November' then 1 end)
or count(case when month = 'October' then 1 end) = 0;
如您所见,您无需再访问该表两次。只是聚合并看看你有什么: - )