【发布时间】:2021-03-04 21:00:41
【问题描述】:
我有一个 sqlite3 数据库,其中一个表包含有关运行测试的信息,例如:
表A
名称状态时间
测试通过 33
testb 失败 22
测试失败 41
testc 通过了 18
测试通过 27
某些测试会不时重命名,例如 testa 到 testa1,可能后来 testa1 到 testa2。所以我的桌子最终可能看起来像:
表A
名称状态时间
测试通过 33
testb 失败 22
testa1 失败 41
testc 通过了 18
测试通过 27
testa2 失败 45
我可以在单独的表格中跟踪更改,例如:
表 B
别名
testa testa1
testa testa2
虽然我不确定第二个条目是“testa testa2”还是“testa1 testa2”,但其中一个是否会比另一个更好(理想情况下,任何一个都可以)。我希望能够以某种方式对它们进行分组,所以我的查询会结合别名,所以我的结果看起来像:
testa、testa1、testa2:2 通过 2 失败
testb:0 次通过,1 次失败
testc: 1 通过 0 失败
所以我需要在查询中执行两个步骤,一个是对 testa、testa1 和 testa2 进行分组,并将该组的结果与(未重命名)测试的结果相加。我可以通过以下方式完成分组(只要我没有两个以上的别名):
select a.name, a.alias as name1, (select b.alias from B b where a.name = b.name and b.alias != a.alias limit 1) as name2 from B a group by a .name;
其中 B 是别名表,但我不知道如何将其与其他表结合起来:
select name, alias from A left join B on job_table.name = B.name where name not in (select alias from B) group by name, alias;
但这给了我成对的别名(testa testa1 在一行,testa testa2 在下一行)并且不能帮助我对这些总数求和。
【问题讨论】:
-
表 B 中的
name是否始终是原始名称?
标签: sqlite