我有一个包含许多订单记录的表,每条记录都有一个名为 phone 的列,用于指示用户。
我想要做的是计算某个日期范围内的不同电话号码。我的sql如下:
select count(distinct phone),
count(distinct case when order_date < '2013-1-19' then phone end)
from some_table
where order_date >= '2013-1-1' and order_date < '2013-2-1'
结果很奇怪:
194410 0
该语句count(distinct case when order_date < '2013-1-19' then phone end)
的结果为零!但是,当我使用以下 sql 手动检查结果时:
select count(distinct phone)
from some_table
where order_date >= '2013-1-1' and order_date < '2013-1-19'
我被告知有 171300 个不同的电话会议比条件。
如果我将日期范围减少到 [2013-1-1, 2013-1-16) in count(distinct case when order_date < '2013-1-19' then phone end)
,我得到了正确的结果。而这次只有161415个不同的电话。
我的第一个 sql 有什么问题?
谢谢。