2017-01-04 6 views
2

У меня есть два столбца, временная метка и номер, который был выбран.MYSQL Query: group by entries per date и count entries

card  added 
1   2016-09-23 13:48:48 
3   2016-09-23 13:48:48 
1   2016-09-23 13:48:48 
2   2016-09-24 13:48:48 
1   2016-09-24 13:48:48 
2   2016-09-24 13:48:48 
3   2016-09-24 13:48:48 

Что мне нужно в качестве выходного сигнала является счетчиком каждой карты, сгруппированные по записи, как это:

card  count  added 
1   2   2016-09-23 
3   1   2016-09-23 
1   1   2016-09-24 
2   2   2016-09-24 
3   1   2016-09-24 

Так что я думаю, что я должен рассчитывать карту, где добавляется одно и то же. Но я не знаю, как это сделать, плюс мне нужно, чтобы он был сгруппирован по карте за каждый добавленный.

ответ

2

Вам необходимо сгруппировать результаты по карте и усеченной дате. Усечение может быть сделано путем вызова date():

SELECT card, DATE(added) AS added, COUNT(*) 
FROM  mytable 
GROUP BY card, DATE(added) 
+1

Это было намного легче, чем я думал. Большое спасибо. Не знал, что я мог бы сгруппировать по два столбца. – Hauke

0

Вам просто нужно GROUP BY карты и дата:

SELECT card, COUNT(*), CAST(added AS date) added 
FROM your_table 
GROUP BY card, CAST(added AS date) 
0
SELECT card, COUNT(card) AS CNT, added 
FROM `example_table` 
GROUP BY card, added 
ORDER BY added ASC, card ASC 
+0

Обычно полезно добавить объяснение того, что делает ваш код. Это позволяет более новым разработчикам понять, как работает код. –

+0

Да, правда, извините. Моя вина. Я написал приветствие перед запросом, но когда был выбран код форматирования, он исчез, и я увидел, что столько ответов было опубликовано, когда я писал, и предположил, что он уже разрешен. –