2016-06-05 5 views
0

Прямо сейчас у меня есть следующий (My) SQL-Statement, который возвращает количество записей в зависимости от часа.Группа SQL: подсчет нескольких вещей

SELECT 
    COUNT(*) AS amount 
    HOUR(date) AS hour 
    -- [1] 
FROM 
    table 
GROUP BY 
    HOUR(date) 

Но я действительно хочу другой результат, который содержит количество дней, в течение которых появился час. Основном что-то вроде:

[1] = COUNT(DAY(date), MONTH(date), YEAR(date)) AS day_count 

Пример:

id | date 
0 | 01/01/2001 5:15 
1 | 01/01/2001 5:10 
2 | 01/01/2001 6:03 
3 | 01/01/2001 7:04 
4 | 02/01/2001 5:00 

Если вернуться

amount | hour | day_count 
3  | 5  | 2 
1  | 6  | 1 
1  | 7  | 1 
+0

Можете ли вы предоставить образцы данных и ожидаемые результаты LTS? Не совсем понимаю ваш вопрос. – sgeddes

+0

Хорошо, я добавил пример. – random314

ответ

0

Я думаю, вам просто нужно расстаться из дни на час и день, и группа ими .. .

SELECT count(*) as `amount` 
    , count(hour(date)) as `Hour` 
    , count(day(date)) as `Day_Count` 
FROM table 
GROUP BY hour(Date), day(date) 
+0

Спасибо, это работает! Но я думаю, что «день (01/01/2001)» = 'день (01/02/2001)' = 1, поэтому я группируюсь по месяцам и годам. – random314

+0

Ах да; это было бы. Я предполагал, что вы делали что-то по часам дня в течение часа, и меня не интересовали месяц/год. – xQbert

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