SQL查询基于时间戳选择按小时(col)和工作日(行)分组的值

乔塔

我已经搜索了这个问题,并发现了一些类似的帖子,但是无法适应我的需求。

我一直以来都有一个包含服务器请求的数据库,每个请求都有一个时间戳,并且我试图提出一个查询,该查询使我可以创建一个热矩阵图(CCC HeatGrid)。

sql查询结果必须表示按每个工作日的每小时分组的服务器负载。

像这样:示例表

我只需要SQL查询,我知道如何创建图表。

谢谢,

spencer7593

那些看起来像是行的“计数”。

问题之一是“稀疏”数据,我们稍后可以解决。

要返回星期几(“星期日”,“星期一”等),可以使用该DATE_FORMAT函数。为了使这些顺序排序,我们需要包括一个0到6或1到7的整数。我们可以ORDER BY在该表达式上使用一个子句来获取按所需顺序返回的行。

为了使顶部的“小时”更短,我们可以使用SELECT列表中的表达式来有条件地增加计数。

假设您的timestamp列名为ts,并假设您要从2014年开始提取所有行,我们从以下内容开始:

SELECT DAYOFWEEK(t.ts)
     , DATE_FORMAT(t.ts,'%W')

  FROM mytable t
 WHERE t.ts >= '2014-01-01'
   AND t.ts <  '2015-01-01'
 GROUP BY DAYOFWEEK(t.ts)
 ORDER BY DAYOFWEEK(t.ts)

(我需要检查MySQL文档, WEEKDAY 并且 DAYOFWEEK 实际上是相似的,但是我们希望返回周日的最低值和周六的最高值的那个……我想我们想要这样 DAYOFWEEK ,很容易在以后进行修复)

现在,“技巧”是顶部的各列。

我们可以使用DATE_FORMAT()函数,HOUR()函数或EXTRACT()函数从时间戳中提取“小时” ...任您选择。

如果时间戳在指定的小时内,我们想要的表达式将返回1,否则返回0。然后,我们可以使用SUM()聚合来累加1。布尔表达式的TRUE值返回1,FALSE值返回0。

     , SUM( HOUR(t.ts)=0  )  AS `h0`
     , SUM( HOUR(t.ts)=1  )  AS `h1`
     , SUM( HOUR(t.ts)=2  )  AS `h2`
     , '...'
     , SUM( HOUR(t.ts)=22 )  AS `h22`
     , SUM( HOUR(t.ts)=23 )  AS `h23`

布尔表达式也可以计算为NULL,但是由于我们有一个谓词(即WHERE子句中的条件)来确保我们ts不能为NULL,所以不会有问题。

我们可能遇到的另一个问题(如我之前提到的)是“稀疏”数据。为了说明这一点,请考虑如果没有行具有ats值的情况(对于我们的查询)会发生什么Monday发生的情况是我们没有在的结果集中出现任何一行Monday如果确实发生了某行Monday(或一周中的任何一天)“丢失”的情况,我们确实知道“丢失”Monday行中的所有小时计数都将为零。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按日期分组-月-日小时和时间查询

来自分类Dev

基于SQL Server班次的工作日,周末,公共假日和一天中的时间

来自分类Dev

跨工作日调整时间戳

来自分类Dev

工作日SQL查询

来自分类Dev

SQL工作日查询

来自分类Dev

按小时分组时间戳

来自分类Dev

按工作日分开时间间隔

来自分类Dev

选择语句中的跨工作日和小时数并计算记录

来自分类Dev

MySQL查询按天分组时间戳

来自分类Dev

SQL:基于时间戳和代码的查询状态

来自分类Dev

如何从Postgresql中的时间戳中提取工作日?

来自分类Dev

使用AngularJS从时间戳获取工作日

来自分类Dev

sql通过打开和关闭时间范围来计算工作日的工作时间

来自分类Dev

基于不同的时间戳/时间戳和用户选择的输入(T-SQL)的SQL分段/平均

来自分类Dev

Mysql按工作日分组,填写缺少的工作日

来自分类Dev

按日和小时分组

来自分类Dev

根据工作日和小时数 + 假期将工作时间添加到正确的价格类别

来自分类Dev

将时间戳索引的系列按小时/天分组

来自分类Dev

在MongoDB中按小时分组的时间戳

来自分类Dev

Python中按索引的工作日选择数据框行

来自分类Dev

在Python中按索引的工作日选择数据框行

来自分类Dev

SQL-结果从工作日(时间)和周(无时间)开始

来自分类Dev

SQL选择每天的总数,但按日期和小时分组(每小时的运行总数)

来自分类Dev

在SQL的时间戳差值查询分组

来自分类Dev

X小时内的查询最大值和时间戳值

来自分类Dev

按工作日在列和行中计算出现次数

来自分类Dev

优化查询 - 如何从日期时间列中选择最高和最低行,按日期分组并返回数组

来自分类Dev

SQL和按查询分组

来自分类Dev

仅工作日在两个日期和两次之间进行SQL查询

Related 相关文章

  1. 1

    按日期分组-月-日小时和时间查询

  2. 2

    基于SQL Server班次的工作日,周末,公共假日和一天中的时间

  3. 3

    跨工作日调整时间戳

  4. 4

    工作日SQL查询

  5. 5

    SQL工作日查询

  6. 6

    按小时分组时间戳

  7. 7

    按工作日分开时间间隔

  8. 8

    选择语句中的跨工作日和小时数并计算记录

  9. 9

    MySQL查询按天分组时间戳

  10. 10

    SQL:基于时间戳和代码的查询状态

  11. 11

    如何从Postgresql中的时间戳中提取工作日?

  12. 12

    使用AngularJS从时间戳获取工作日

  13. 13

    sql通过打开和关闭时间范围来计算工作日的工作时间

  14. 14

    基于不同的时间戳/时间戳和用户选择的输入(T-SQL)的SQL分段/平均

  15. 15

    Mysql按工作日分组,填写缺少的工作日

  16. 16

    按日和小时分组

  17. 17

    根据工作日和小时数 + 假期将工作时间添加到正确的价格类别

  18. 18

    将时间戳索引的系列按小时/天分组

  19. 19

    在MongoDB中按小时分组的时间戳

  20. 20

    Python中按索引的工作日选择数据框行

  21. 21

    在Python中按索引的工作日选择数据框行

  22. 22

    SQL-结果从工作日(时间)和周(无时间)开始

  23. 23

    SQL选择每天的总数,但按日期和小时分组(每小时的运行总数)

  24. 24

    在SQL的时间戳差值查询分组

  25. 25

    X小时内的查询最大值和时间戳值

  26. 26

    按工作日在列和行中计算出现次数

  27. 27

    优化查询 - 如何从日期时间列中选择最高和最低行,按日期分组并返回数组

  28. 28

    SQL和按查询分组

  29. 29

    仅工作日在两个日期和两次之间进行SQL查询

热门标签

归档