我们正试图跟踪我们部门的应用程序和我们的单元测试使用情况,因此我创建了一个数据库来跟踪这一点。我有一个 Applications 表,起初,我在 Applications 表中创建了一个 UnitTests 列,但我只是意识到,只需将其保持在它将覆盖该应用程序的单元测试历史记录的日期。

由于我希望能够随时间提取此处的数据以生成显示进度的图表,我意识到我需要一个名为 UnitTestTracking 的单独表格,其中包含以下列:

  • ID(主键)
  • application_ID(int)\
  • 添加日期(日期时间)
  • 单元测试计数(整数)

这样,人们可以每周一次或每月一次在此表中添加新条目,我们将有一个随时间推移的历史记录,以显示每个应用程序的进度以及所有应用程序的总数。

现在的一个问题是:由于不同的应用程序会在不同的时间向该表中添加条目,因此我将如何针对该表编写查询以获取所有应用程序的总计数?

本质上(在伪 SQL 中)我需要这样的东西:

“选择所有应用程序的单元测试计数,其中应用程序 data_added 是为该应用程序 ID 添加的最新日期”

您将如何编写此查询?

请您参考如下方法:

我认为人们似乎比实际情况更难做到这一点。

要解决这个问题,您需要两个查询:

  1. 为我找到每个应用程序 ID 的最新条目
  2. 使用每个应用程序 ID 的最新条目给我单元测试计数的总和。

第一个 SQL 是:

SELECT application_ID, MAX(date_added) AS lastDateAdded FROM UnitTestTracking GROUP BY application_ID 

第二,我们通过嵌套查询来完成这项工作:

SELECT  
    SUM(unittestcount)  
FROM  
    UnitTestTracking JOIN  
    (SELECT  
         application_ID, MAX(date_added) AS lastDateAdded  
     FROM  
         UnitTestTracking GROUP BY application_ID) T  
    ON UnitTestTracking.application_ID = T.application_ID AND  
       UnitTestTracking.date_added = T.LastDateAdded 

这应该会为您提供所需的信息,即当前的单元测试总数。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!