2012-03-06 3 views
1

Извинения заранее, если этот вопрос плохо сформулирован!Подсчет происшествий по дням по разным неделям

У меня есть таблица MySQL, которая имеет поле datetime. Как подсчитать количество вхождений каждого имени дня в течение отдельных недель?

Вот запрос, который я пытаюсь, и результат, который он дает всего за 2 недели данных. Это (очевидно) считая каждое вхождение для каждой записи, в то время как я хочу выход быть либо 2 или 3.

SELECT dayname(datetime), COUNT(dayofweek(datetime)) 
    FROM mytable GROUP BY dayofweek(datetime); 

+-------------------+----------------------------+ 
| dayname(datetime) | count(dayofweek(datetime)) | 
+-------------------+----------------------------+ 
| Monday   |      404 | 
| Tuesday   |      275 | 
| Wednesday   |      251 | 
| Thursday   |      196 | 
| Friday   |      201 | 
| Saturday   |      128 | 
+-------------------+----------------------------+ 

Группировка по неделям не решить эту проблему. Мне кажется, что мне нужно «подсчитать, какая неделя отличается», но я не уверен, что это возможно.

Любое руководство очень ценится, спасибо!

ответ

1

Пробуйте подсчет различных значений (только для даты) вашего поля datetime. Подробнее о COUNT(DISTINCT expr,[expr...]) и DATE(expr), который возвращает часть даты только из поля datetime.

SELECT dayname(datetime), COUNT(distinct date(datetime)) 
FROM mytable GROUP BY dayname(datetime); 
+0

Argh! Теперь это имеет смысл. @ Chriseyre2000 был прав, говоря, что я должен группировать то, что я * не * подсчитываю. Большое вам спасибо за это. –

0

Обычно вы группируете то, что вы не считаете.

+0

Этот запрос дает те же результаты (кроме перечисления имен дней в другом порядке). Однако, спасибо за объяснение правильного использования GROUP BY. –

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