2016-06-16 2 views
0

У меня есть таблица SQL, в которой хранятся некоторые данные и дата (например, yyyymmdd) и время (например, hhmmss). Теперь мне нужно выбрать счетчик количества записей за каждый час дня.Можно сделать запрос SQL для подсчета на каждый час дня?

  • Первый подсчет записей будет: 000000 сезам 005959
  • Второй будет: 010000 сезам 015959

Можно ли сделать это с помощью одного выбора, а затем есть массив 24 кол Результаты? В противном случае мне нужно будет создать 24 выбора, чтобы получить все данные, которые я хочу.

+0

Mysql или SQL-сервер? – scaisEdge

+0

что вы пробовали? – Alex

+0

Здесь вы должны использовать таблицу подсчета или чисел в качестве основной таблицы в своем запросе. –

ответ

1

Используйте группу по функциям. Другой вариант - создать поля для часа, минут и секунд. Он будет дублировать данные, но проблем нет.

CREATE TABLE test(id int, date varchar(8), time varchar(6)); 

INSERT INTO test VALUES(1,'20160616','015959'); 
INSERT INTO test VALUES(2,'20160616','015959'); 
INSERT INTO test VALUES(3,'20160616','025959'); 

    SELECT count(substr(time,1,2)), test.date 
    FROM test 
GROUP BY date, substr(time,1,2); 

Выход:

count(substr(time,1,2)), date 
'2', '20160616' 
'1', '20160616' 

Если у вас есть TIME колонки, просто используйте:

SELECT count(hour(time)), test.date 
    FROM test 
GROUP BY date, hour(time); 

Если вам не нужно иметь этот счет на date, просто удалить из select и group by статей.

0

Я думаю, вы можете просто использовать функцию HOUR. Я не использую MYSQL, но похоже, что у него есть эта функция. Можно проверить синтаксис на нем.

SELECT HOUR(TheTimeField), COUNT(*) 
FROM TheTable 
GROUP BY HOUR(TheTimeField) 
ORDER BY HOUR(TheTimeField) 
Смежные вопросы