当前位置: 首页 > 面试题库 >

SQL命令按天/月求和

牛嘉谊
2023-03-14
问题内容

我有下表:

+----+---------------------+-------------+-----------------+
| id | stat_time           |       reads |          writes |
+----+---------------------+-------------+-----------------+
|  1 | 2013-07-18 20:00:00 |    42614543 |         1342129 |
|  2 | 2013-07-18 21:00:00 |    23085319 |          326139 |
|  3 | 2013-07-25 12:00:00 |           0 |           39639 |
|  4 | 2013-07-25 13:00:00 |      754166 |           39639 |
|  5 | 2013-07-25 14:00:00 |      693382 |          295323 |
|  6 | 2013-07-25 15:00:00 |     1334462 |               0 |
|  7 | 2013-07-25 16:00:00 |    10748367 |          261489 |
|  9 | 2013-07-25 17:00:00 |     4337294 |               0 |
| 10 | 2013-07-25 18:00:00 |     3002796 |               0 |
| 11 | 2013-07-25 20:00:00 |     3002832 |               0 |
| 12 | 2013-07-25 23:00:00 |           0 |          333468 |
| 13 | 2013-07-26 17:00:00 |    10009585 |               0 |
| 15 | 2013-07-26 18:00:00 |     6005752 |               0 |
| 17 | 2013-07-26 21:00:00 |      333663 |               0 |
+----+---------------------+-------------+-----------------+

我想执行以下操作:

SELECT stat_time, SUM(reads), SUM(writes) from this_table GROUP BY stat_time HAVING 'the same day'..

因此,输出三行的命令(第一行用于2013-07-18,第二行用于2013-07-25,第三行用于2013-07-26),并且该列中的每个此类行读/写的总和为在这一天读取/写入。

谢谢大卫


问题答案:

您想要将转换stat_time为一天来执行此操作。该方法取决于数据库。这是一种方法:

SELECT cast(stat_time as date) as stat_day, SUM(reads), SUM(writes)
from this_table
GROUP BY cast(stat_time as date)
order by stat_day;

以下是一些其他方法(适用于MySQL和Oracle):

SELECT date(stat_time) as stat_day, SUM(reads), SUM(writes)
from this_table
GROUP BY date(stat_time)
order by stat_day;

SELECT trunc(stat_time) as stat_day, SUM(reads), SUM(writes)
from this_table
GROUP BY trunc(stat_time)
order by stat_day;


 类似资料:
  • 问题内容: 我目前正在按月对库存使用情况进行分组和汇总: 这给了我期望的结果: 问题 在没有数据存在的月份中,我该怎么做才能返回 零 ,如下所示: 问题答案: 过去,我通过创建一个临时表来解决这样的问题,该表将保存所有需要的日期: 然后,修改查询以针对该表进行联接: 然后,无论库存中是否存在该记录,您都应该有每个月的记录。

  • 问题内容: 我有一个具有此架构的表 我正在尝试使查询工作显示每个月的总数。到目前为止,我已经尝试过DateDiff和嵌套选择,但都没有给我想要的东西。我认为这是最接近的: 但是当我应该获取值时,我只会得到空值。我想念什么吗? 问题答案: 您也可以尝试:

  • 主要内容:1. 数据定义语言(DDL),2.数据操作语言,3. 数据控制语言,4. 事务控制语言,5. 数据查询语言SQL命令是指令,它用于与数据库通信交互。 它还用于执行特定任务,功能和数据查询。 SQL可以执行各种任务,如创建表,向表中添加数据,删除表,修改表,为用户设置权限等。 SQL命令的类型,如下图所示 : 1. 数据定义语言(DDL) DDL更改表的结构,如创建表,删除表,更改表等。 DDL的所有命令都是自动提交的,这意味着它会永久保存数据库中的所有更改。 以下是DDL下的一些命令:

  • 问题内容: 亲爱的专业人员, 我有一个查询来获取本月的第一天和最后一天,但是我对本月第一天的时间戳有疑问。 自2015年2月起,我希望获得以下结果: @LastDOM是正确的,但是我没有得到@FirstDOM的时间戳部分的零,我得到了正确的日期,但是是运行脚本的时间。假设是上午8:50,我得到: 修复此小故障的最佳方法是什么? 问候, 缺口 问题答案: 将@FirstDOM转换为如下形式: 我希望

  • 本文向大家介绍mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句,包括了mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句的使用技巧和注意事项,需要的朋友参考一下 mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法分析总结: 话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添

  • 问题内容: 我正在尝试返回一些在滚动12个月内分散的结果,例如: 如何在日期范围内分散结果,并在第一列中填充月份名称? 在MSSQL中,它将类似于: 但这是针对Oracle数据库的,因此DATEPART和DateTime不可用。 我的问题表大致为: 问题答案: 使用: 您还可以使用: