2015-01-31 2 views
1

Я хочу получить кол-во клиентов city wise сегодня, вчера, на прошлой неделе, в прошлом месяце.Как получить кол-во полей за последние 1 недели, последние 1 месяца, вчера

Я хочу, чтобы результат как

city today yesterday lastweek lastmnth 
    1  23  2   12   12 

У меня есть структуру таблицы как следующие

клиентов

c_id city_id c_name   currentdate 
    1  1  Rama    2015-01-30 09:43:17 
    2  1  kavitha   2015-04-30 09:43:17 

города

city_id city_name 
    1   hyd 
    2   Wgl 

Я попробовал его с помощью следующей.

select c.c_city, (select count(cr_id) as lastmonth from customer 
    where currentdate > DATE(NOW() - INTERVAL 30 DAY))) from customers as c 
    left join cities as ci on c.city_id = ci.city_id group by c.city_id 

ответ

0

Аналогично этому:

SELECT city_id as city, 
SUM(CASE WHEN LEFT(currentdate,10) = LEFT(NOW(),10) THEN 1 ELSE 0 END) as today, 
SUM(CASE WHEN LEFT(currentdate,10) = LEFT(NOW()-INTERVAL 1 DAY,10) THEN 1 ELSE 0 END) as yesterday, 
SUM(CASE WHEN currentdate > NOW()-INTERVAL 7 DAY THEN 1 ELSE 0 END) as lastweek, 
SUM(CASE WHEN currentdate > NOW()-INTERVAL 30 DAY THEN 1 ELSE 0 END) as lastmnth 
FROM customers GROUP BY city_id 

За последнюю неделю и в прошлом месяце, я предполагаю, что вы имеете в виду 7 дней назад и 30 дней назад. Если вам нужны данные с предыдущей недели и предыдущего месяца (что не имеет для меня смысла в этом контексте), вам может потребоваться переписать интервалы.

+0

Спасибо большое. Мне очень полезно. –

 Смежные вопросы

  • Нет связанных вопросов^_^