我的sql查询获取固件的错误修复验证列表,例如def-456是一张票,要求我对产品进行固件测试。def-456有几个子任务,记录结果。结果记录为:id:abc-123,abc-124,abc-125等(如下表所示)。这些对应的ID的结果为“通过”或“失败”。我需要计算两个值----> 1.尝试次数:在以下示例中,尝试次数将为3/5,有3次通过和2次失败(即通过/通过+失败),在这里我可以使用count ()方法,但是不知道如何添加“ / 5”和2。第一次尝试成功率:在以下示例中,abc-123失败,但是abc-124通过,abc-125失败,但是abc-126通过,并且abc-127通过而没有任何失败,这表示我的成功率为:3分之1(即1/3),如何在sql中显示这些值?这有点棘手,我无法为此找到逻辑。
这是我的def-456数据:
value | id| -------------- fail | abc-123 pass | abc-124 fail | abc-125 pass | abc-126 pass | abc-127
这是我正在尝试显示的o / p:
id | value | attempts| %for attempts | 1st attempt ---------------------------------------------------- abc-123 fail | 3/5 | 60% | 1/3 abc-124 pass | 3/5 | 60% | 1/3 abc-125 fail | 3/5 | 60% | 1/3 abc-126 pass | 3/5 | 60% | 1/3 abc-127 pass | 3/5 | 60% | 1/3
我相信这就是您所需要的:
SELECT a.id, a.resolution, b.* FROM Table1 a CROSS JOIN ( SELECT CONCAT(SUM(aa.resolution = 'pass'), '/', COUNT(*)) AS attempts, CONCAT((SUM(aa.resolution = 'pass') / COUNT(*)) * 100, '%') AS percent_attempts, CONCAT(SUM(bb.mindate IS NOT NULL AND resolution = 'pass'), '/', SUM(resolution = 'pass')) AS first_attempt FROM Table1 aa LEFT JOIN ( SELECT MIN(`date`) AS mindate FROM Table1 ) bb ON aa.`date` = bb.mindate ) b