У меня есть таблица со многими данными о заказе, и каждая запись имеет столбец с именем phone, используемый для указания пользователя.mysql count num num using with statment on too many rows
Что я хочу сделать, так это подсчет отдельного номера телефона в некоторых диапазонах дат. И мой 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] в count(distinct case when order_date < '2013-1-19' then phone end)
, я получил правильный результат. На этот раз есть только 161415 различных телефонов.
Что случилось с моим первым sql?
Спасибо.
Извините за недоразумение. Я хочу рассчитать чистый рост номера телефона. Во-первых, я рассчитываю отдельный номер телефона в течение 2013-1-1 и 2013-1-31. Затем я вычисляю отдельный номер телефона в течение 2013-1-1 и 2013-1-18 годов. Наконец, чистый рост будет рассчитываться путем вычитания значения, полученного на первом и втором шагах. – jlyu
@jlyu Вам нужна дополнительная помощь по вашему вопросу? – peterm
@jlyu - peterm ответил на ваш вопрос адекватно, если я правильно понял. Upvoted! –