在SQL

时间:2017-08-25 07:53:19

标签: mysql sql timestamp

我有一个填充时间戳的专栏

例如。

               col1
2017-01-01 10:30:00
2017-01-02 08:10:00
...

我希望按星期几分组,然后按小时分组。

输出看起来像

day  hour  count
  1     1      5
        2     12
  2     1     10
        5      3
  ...

我如何在SQL中实现它? 我正在使用MySQL。

3 个答案:

答案 0 :(得分:3)

在派生表中提取工作日和小时。 GROUP BY其结果,如:

select d, h, count(*)
from
(
    select dayofweek(col1) d, hour(col1) h
    from tablename
) dt
group by d, h

注意:由于我不了解MySQL,您可能需要调整每周和每小时的部分...

答案 1 :(得分:0)

select getdate() as Dates into #temp

select datepart(DAY,dates), datepart(hour, dates), count(*) from #temp group by dates

是我如何利用datepart功能完成的。

答案 2 :(得分:0)

您可以在

组中使用dayofweek和小时的mysql函数

在mysql中:

CREATE TABLE IF NOT EXISTS test (
  col TIMESTAMP
) ;

INSERT INTO test (col) VALUES
  (TIMESTAMPADD(HOUR, 7, TIMESTAMPADD(DAY, 1, CURDATE()))),
  (TIMESTAMPADD(HOUR, 6, TIMESTAMPADD(DAY, 2, CURDATE()))),
  (TIMESTAMPADD(HOUR, 7, TIMESTAMPADD(DAY, 3, CURDATE()))),
  (TIMESTAMPADD(HOUR, 7, TIMESTAMPADD(DAY, 10, CURDATE()))),
  (TIMESTAMPADD(HOUR, 7, TIMESTAMPADD(DAY, 1, CURDATE()))),
  (TIMESTAMPADD(HOUR, 6, TIMESTAMPADD(DAY, 2, CURDATE())))
;

SELECT dayofweek (col), hour(col), count(*)
FROM test GROUP BY dayofweek(col), hour(col);