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

如何在SQL中按时间分组

巫煌
2023-03-14
问题内容

我正在使用2个步骤的应用程序。

  • 扫描日志并将其中的数据持久保存在数据库中。
  • 从数据库读取数据并可视化数据。

第一步或多或少已经完成。我尝试通过第二步来解释背景和要求。

数据库中的每一行都包含一些信息,例如logdate,logfilename,LogType,logMessage等。因此,我想例如编写SQL来总结每天的给定LogType。

这是列:

[LogDate] [datetime] NOT NULL,
[Computer] [varchar](50) NOT NULL,
[Type] [varchar](50) NOT NULL,
[FileName] [varchar](100) NOT NULL,
[LineNo] [int] NOT NULL,
[UserName] [varchar](50) NOT NULL,
[Message] [varchar](max) NOT NULL,

我想如果我想显示Type = TDBError的所有行,输出可能是这样的:

Date        Sum
2012-10-01  3
2012-10-02  12
2012-10-03  40
2012-10-05  24
2012-10-06  18

因此,在2012年10月1日,数据库中有3行,其中Type = TDBError。截至2012年10月2日,共有12个,等等。

我应该如何为此编写SQL?


问题答案:

假设使用SQL Server 2008或更高版本:

SELECT 
  [Date] = CONVERT(DATE, LogDate), 
  [Sum] = COUNT(*)
FROM dbo.Log_Table_Name
WHERE [Type] = 'DBError'
GROUP BY CONVERT(DATE, LogDate)
ORDER BY [Date];


 类似资料:
  • 问题内容: 我从日志文件中获取了一些数据,想按分钟对条目进行分组: df: 我尝试了以下选项: 级别太高,想要汇总。 失败失败。 工作正常,并返回一个对象进行进一步处理,例如: grouped.Source.value_counts() 2012-01-01 12:30:00 source1 1 2012-01-01 12:31:00 source2 2 source1 2 2012-01-01

  • 问题内容: 我需要将表分组为15分钟间隔。我可以这样做: 但是要在图表中显示返回的数据,我还需要插入没有任何数据且当前未出现在我的select语句中的间隔。我该如何插入这些? 问题答案: 用15分钟的增量创建一个带有所有可能时间戳的表,然后从该表向上面的查询进行LEFT JOIN。 如果您知道图表始终涵盖24小时,则只需创建一个数字为0-95的表格,然后为每个条目将其添加到图表的开始时间。

  • 问题内容: 假设我有以下内容的事件表,和。 我想知道X人花了多少时间做一个事件(事件可以互相覆盖)。 如果此人只有1个事件,则很简单: 如果此人有2个事件,那将很棘手。 我将为预期的结果设置一些方案。 场景1 这意味着他的结果应该是从1到5的datediff 方案2 这意味着他的结果应该是一些和 如何在sql查询中获得此结果?我只能想到一堆if语句,但是同一个人可以有n个事件,因此查询确实会造成混

  • 问题内容: 我有这个SQL查询: 结果是这样的: 我现在的问题是我无法将DateCreated分组,因为它具有不同的时间。 我只想按日期分组。范例:2010-09-12 谢谢并恭祝安康… 问题答案: 我认为值得单独发布以下内容: 使用char转换来削减超时日期(广播或转换为varchar)比使用慢。我制定了[完整的脚本和性能测试结果以支持此断言 另外,请注意,您的GROUP BY列表与SELECT

  • 问题内容: 对于此表: 我需要将具有相同顺序的组相加,以产生此结果。 如何在SQL Server中做到这一点? 注意:该列中的值是连续的。 问题答案: 根据我在您的问题中添加的标签,这是一个空白和孤岛的问题。 效果最好的解决方案可能是 如果值不能保证如所述连续,那么您将需要使用 而是在CTE定义中。 SQL小提琴

  • 问题内容: 我有一个数据集: 我想基本上在一个小时内“拆分”这些时间间隔,例如: 到目前为止,这是我的代码(该想法的积分发给@DumitrescuBogdan,将通话数据分为15分钟间隔): 后半部分(在“全部合并”之后)不产生任何结果,前半部分产生以下结果: 谢谢,我是初学者。我了解第一部分;坦白地说,我不明白下半场 我愿意接受其他解决方案。 我正在使用MS-Access 2010 问题答案: