2015-02-12 4 views
0

У меня есть таблица mysql с столбцом даты. дата тип данных столбца TIMESTAMP и набор по умолчанию CURRENT_TIMESTAMP которые записывают как дата и времяКоличество строк mysql почасовой для данной даты

Теперь я хочу, чтобы подсчитать свои ряды под конкретный день

В качестве примера

++++++++++ 8am 9am 10am 11am 
++user1+++ 15 10 11 10 
++user2+++ 10 10 20 30 

Каждый час счетчик должен быть записывается отдельно, как это.

я пытался с этим, но это не работает

SELECT COUNT(*) FROM mytable 
WHERE `date` = '2015-01-26' 
GROUP BY HOUR(`TIMESTAMP`) 

как я могу этого достичь?

Я понятия не имею, как сгруппировать с пользователем. sproc также хорошо

Я сделал sproc вот так. но этот sproc содержит ошибки. может кто-то пожалуйста, помогите мне, теперь я хочу, чтобы посчитать это разделенным 9 часов

DELIMITER $$ 

CREATE DEFINER=`root`@`localhost` PROCEDURE `test22`(IN datestamp DATE) 
BEGIN 
SELECT username, 

     COUNT(if(disblid,1,null)) '8:00 AM', where time between '08:00' and '09:00': 
     COUNT(if(disblid,1,null)) '9:00 AM' , where time between '09:00' and '10:00'; 




FROM claimloans 
WHERE DATE(date) = datestamp 
group by Username; 

    END 

Спасибо всем, кто помог мне, что я придумал sproc, что работает прекрасно.

DELIMITER $$ 

CREATE DEFINER=`root`@`localhost` PROCEDURE `claimscounter`(IN datestamp DATE) 
BEGIN 
SELECT username, 

    COUNT(IF(HOUR(date)=0,1,NULL)) AS '12am', 
    COUNT(IF(HOUR(date)=1,1,NULL)) AS '1am', 
    COUNT(IF(HOUR(date)=2,1,NULL)) AS '2am', 
    COUNT(IF(HOUR(date)=3,1,NULL)) AS '3am', 
    COUNT(IF(HOUR(date)=4,1,NULL)) AS '4am', 
    COUNT(IF(HOUR(date)=5,1,NULL)) AS '5am', 
    COUNT(IF(HOUR(date)=6,1,NULL)) AS '6am', 
    COUNT(IF(HOUR(date)=7,1,NULL)) AS '7am', 
    COUNT(IF(HOUR(date)=8,1,NULL)) AS '8am', 
    COUNT(IF(HOUR(date)=9,1,NULL)) AS '9am', 
    COUNT(IF(HOUR(date)=10,1,NULL)) AS '10am', 
    COUNT(IF(HOUR(date)=11,1,NULL)) AS '11am', 
    COUNT(IF(HOUR(date)=12,1,NULL)) AS '12pm', 
    COUNT(IF(HOUR(date)=13,1,NULL)) AS '1pm', 
    COUNT(IF(HOUR(date)=14,1,NULL)) AS '2pm', 
    COUNT(IF(HOUR(date)=15,1,NULL)) AS '3pm', 
    COUNT(IF(HOUR(date)=16,1,NULL)) AS '4pm', 
    COUNT(IF(HOUR(date)=17,1,NULL)) AS '5pm', 
    COUNT(IF(HOUR(date)=18,1,NULL)) AS '6pm', 
    COUNT(IF(HOUR(date)=19,1,NULL)) AS '7pm', 
    COUNT(IF(HOUR(date)=20,1,NULL)) AS '8pm', 
    COUNT(IF(HOUR(date)=21,1,NULL)) AS '9pm', 
    COUNT(IF(HOUR(date)=22,1,NULL)) AS '10pm', 
    COUNT(IF(HOUR(date)=23,1,NULL)) AS '11pm' 


FROM claimloans 
WHERE DATE(date) = datestamp 
group by username; 

    END 

Но теперь у меня есть еще одна небольшая проблема. Это отсчитывает все часы. если он не входит в течение часа, он считается равным нулю. Я хочу, чтобы сосчитать часов только записи кто-то может помочь мне с этим

Thnaks

+0

Это сводный запрос, а mysql их не поддерживает. сделайте поворот в своем коде клиента и сохраните себе много волоса. –

+0

сэр, пожалуйста, расскажите мне об этом подробнее. У меня мало знаний в SQl –

+0

сэр, я написал sproc, можете ли вы заглянуть туда? –

ответ

0

Я бы решить эту проблему, как вид, например, так:

CREATE TABLE foo (id int not null, val timestamp); 

CREATE VIEW foo_by_hours AS (
    SELECT 
     id, 
     DATE(val) AS 'day', 
     COUNT(IF(HOUR(val)=0,1,NULL)) AS '12am', 
     COUNT(IF(HOUR(val)=1,1,NULL)) AS '1am', 
     COUNT(IF(HOUR(val)=2,1,NULL)) AS '2am', 
     COUNT(IF(HOUR(val)=3,1,NULL)) AS '3am', 
     ... 
    FROM foo 
    GROUP BY id, day); 

SELECT * FROM foo_by_hours; 

Полный пример на SQL Fiddle Я также добавил который использует SUM вместо COUNT. Результат тот же, это просто другой способ сделать это.

+0

Большое спасибо, сэр, это сработало, но это показывает только одну пользовательскую информацию, почему это так? и не могли бы вы просить меня, как я могу отфильтровать это только сегодня, а не из всех данных таблицы? –

+0

, и это введите данные для представления в текущую таблицу. Я хочу отобразить ее из представления datagrid. –

+0

Спасибо, сэр. Я сделал sproc, используя ваш взгляд и теперь его работу. и снова я немного обновляю свой вопрос, не могли бы вы посмотреть на него. –

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