gpt4 book ai didi

mysql - 如何对 MySQL 数据库表执行此查询?

转载 作者:搜寻专家 更新时间:2023-10-30 20:01:51 25 4
gpt4 key购买 nike

我的任务是显示 CPU 使用趋势,作为构建过程的一部分,同时进行回归测试。

每个单独的测试用例运行在 RegrCaseResult 表中都有一条记录。 RegrCaseResult 表看起来像这样:

id   projectName  ProjectType  returnCode  startTime   endTime           totalMetrics

1 'first' 'someType' 16 'someTime' 'someOtherTime' 222

RegrCaseResult.totalMetrics 是一个特殊的键,它通过 ThreadMetrics.id 链接到另一个名为 ThreadMetrics 的表。

这是 ThreadMetrics 的样子:

id   componentType   componentName   cpuTime   linkId

1 'Job Totals' 'Job Totals' 'totalTime' 34223
2 'parser1' 'parser1' 'time1' null
3 'parser2' 'generator1' 'time2' null
4 'generator1' 'generator1' 'time3' null
------------------------------------------------------
5 'Job Totals' 'Jot Totals' 'totalTime' 9899
...

具有 compnentName“Job Totals”的行是 RegrCaseResult 表中的 totalMetrics 将链接到的内容,而“totalTime”是我真正想要获得的特定项目类型。 “Job Totals”实际上是其他记录的总和——在上例中,是 time1 到 time3 的总和。表 ThreadMetrics 末尾的 linkId 可以链接回 RegrCaseResult.id。

要求还规定我应该有一种方法来强制执行条件,该条件仅包括那些在特定时期内具有一致返回代码的项目。这就是我最初的问题来自以下地方:

我创建了以下简单表格来展示我想要实现的目标:

id   projectName  returnCode

1 'first' 16
2 'second' 16
3 'third' 8
4 'first' 16
5 'second' 8
6 'first' 16

基本上,无论 returnCode 值是多少,我都希望获得具有一致 returnCode 的所有项目。在上面的示例中,我应该只得到一个“第一个”的项目。我认为这很简单,但在数据库方面我很糟糕。任何帮助都会很棒。

我尽力说清楚了。希望我已经实现了我的目标。

最佳答案

这里有一个简单的方法:

select projectname
from table t
group by projectname
having min(returncode) = max(returncode);

如果 min()max() 值相同,则所有值都相同(除非您有 NULL值(value)观)。

编辑:

要将 'third' 排除在外,您需要一些其他规则,例如具有多个返回码。所以,你可以这样做:

select projectname
from table t
group by projectname
having min(returncode) = max(returncode) and count(*) > 1;

关于mysql - 如何对 MySQL 数据库表执行此查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24145856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com