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

查询MySQL数据库并按日期范围分组以创建图表

严昊昊
2023-03-14
问题内容

我正在寻找从MySQL数据库创建以下图表。我知道如何实际创建图表(使用Excel或类似程序),我的问题是如何获取创建图表所需的数据。在此示例中,我可以看到1月1日有60张票处于绿线所示的状态。

在此处输入图片说明

我需要跟踪日期范围内项目的票证的历史状态。日期范围由项目经理确定(本例中为1月1日至1月9日)。

对于每张票,我都有以下一组历史数据。每次票证中发生某些更改(状态,描述,受让人,客户更新以及此问题中未显示的其他属性)时,都会在数据库中创建一个“时间戳记”条目。

ticket_num status_changed_date from_state to_state
123456 2011-01-01 18:03:44-1
123456 2011-01-01 18:10:26 1 2
123456 2011-01-01 14:37:10 2 2
123456 2011-01-02 07:55:44 2 3
123456 2011-01-03 06:12:18 3 2
123456 2011-01-04 19:03:43 3 3
123456 2011-01-05 02:05:24 3 4
123456 2011-01-06 18:13:28 4 4
123456 2011-01-07 13:14:48 4 5
123456 2011-01-09 01:35:39 5 5

如何查询给定时间(由脚本确定)的给定时间的数据库,并找出每个票证所处的状态?

例如:要生成上面显示的图表,给定日期2011-01-02 12:00:00,多少张票证处于“ 2”状态?

我尝试查询具有特定日期和范围的数据库,但无法找出获取数据以创建图表的正确方法。在此先感谢您的帮助。


问题答案:

好的,如果您想在特定时间获取特定状态下的记录数,我认为可能需要存储的proc。

CREATE PROCEDURE spStatesAtDate
    @Date datetime,
    @StateId int
AS
BEGIN
   SET NOCOUNT ON;

   SELECT COUNT(*) as Count
   FROM ticket_table t1
   WHERE to_state = @StateId AND status_changed_date < @Date
        AND status_changed_date = (SELECT MAX(status_changed_date) FROM ticket_table t2 where t2.ticket_num=t1.ticket_num AND status_changed_date < @Date)
END

然后在上面的示例中调用它,您的查询看起来像

EXEC spStatesAtDate @Date='2011-01-02 12:00:00', @StateId=2


 类似资料:
  • 问题内容: 我在MySQL中有一张表,该表显示了我每天记录的小时数。我正在尝试建立一个视图,该视图将允许我按块/天范围快速将数据分组。最简单的情况是每月一次,这并不难。我可以将日期选择为“%y-%m”,然后按该列分组。 前任: 如果我按月分组,那很好。但是我的问题是,我需要从每月的13号到下个月的12号进行分组(例如:7月13日至8月12日,8月13日至9月12日,等等)。 有没有一种简单的方法可

  • 这是当我尝试使用'where'而不是'where field'时收到的错误,尽管从文档中看,'where'似乎是查询Firestore数据库的有效命令。是不是我需要下载其他的豆荚?我有的是:pod'firebase/analytics'pod'firebase/auth'pod'firebase/core'pod'firebase/firestore'

  • 感谢所有人!

  • 我需要帮助查询与日期范围的长收集。请参阅下面的示例文档。我想用日期范围查询startTime字段。

  • 问题内容: 动态创建日期范围以便与报表配合使用的最佳方法。 因此,如果给定的一天没有活动,我可以避免报表上的空行。 通常是为了避免此问题:在sql结果中(在mysql或perl端)填充空日期的最直接方法是什么? 问题答案: 在MySQL中,没有直接的方法可以做到这一点。最好的选择是用您选择的服务器端语言生成一个daterange数组,然后从数据库中提取数据,并使用date作为键将结果数组与date

  • 我的文档中有一个日期范围(使用日期对象)如下所示 我试图弄清楚如何构建一个查询来返回包含特定日期的所有事件,例如,像.... 如果查询显示类似这样的内容,但在Firestore查询限制下可能不可能出现这种情况。 因此,我一直在挠头几个小时,要么为此构建一个查询,要么以某种方式结构我的数据,以允许这样做。 这有可能吗?