2014-11-13 3 views
-1

У меня есть таблица с id (int) и sell_date (datetime). Это клиент id и дата продажи. Я должен получить количество клиентов, которые купили что-то как минимум 2 раза в месяц, группу по DATE_FORMAT(sell_date,'%Y-%m') AS period.SQL-запрос, чтобы получить все повторяющиеся записи

Например: у меня есть клиент с id = 1. Он купил что-то 1 раз в 01-2014, 2 раза в 02-2014 и 3 раза в 03-2014. Поэтому я хочу получить это:

period |repeated_buyers 

2014-01 | (none) 
2014-02 | 1 
2014-03 | 1 

Я плохой как SQL. Заранее большое спасибо!

ответ

0

Вы почти находитесь. Вы должны сделать group by на дату

select DATE_FORMAT(sell_date,'%Y-%m') AS period, 
Count(*) as repeated_buyers 
from sales 
group by DATE_FORMAT(sell_date,'%Y-%m') 
0

попробовать это:

select DATE_FORMAT(sell_date,'%Y-%m') AS period,COUNT(ID) as repeated_buyers 
from MyTable 
GROUP BY ID,DATE_FORMAT(sell_date,'%Y-%m') 
having COUNT(ID)>=2 
0

Ах, я сделал это!

SELECT `period`, 
count(`id`) as `accounts` 
    FROM (SELECT 
DATE_FORMAT(`sell_date`,'%Y-%m') AS `period`, 
`id` FROM `terst` GROUP BY `period`, `id` HAVING COUNT(`id`)>1)A 
    GROUP BY `period`    
0

попытка ниже SQL-запрос,

select id,period,repeated_buyers from(select DATE_FORMAT(sell_date,'%Y-%m') AS period,id, 
Count(*) as repeated_buyers 
from TABLE1 
group by DATE_FORMAT(sell_date,'%Y-%m'),id) where repeated_buyers>=2;      
+0

ум, чтобы [объяснить ваше решение] (http://stackoverflow.com/help/how-to-answer) немного? –

+0

Привет. Здесь внутренний запрос возвращает период, id и количество покупателей в суточном месяце. Чтобы получить подробную информацию о покупателях, которые купили atleat 2 раза в месяц, написание внешнего запроса для фильтрации результатов, поступающих из внутреннего запроса, путем размещения условия = = 2. –

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