我当前的代码:
SELECT VENDOR.[VENDOR_NAME], DEVICE.[DEVICE_NAME], DEVICE.[PK_DEVICE],MODELDEVICE.[FK_MODELDEVICE_DEVICE],
COUNT(RESULT.[FK_RESULT_COMMAND]) AS TOTAL_TESTS,
COUNT(case when TYPERESULT.[TYPERESULT_NAME]='ERROR' then 1 else null end) as ERROR,
COUNT(case when TYPERESULT.[TYPERESULT_NAME]='OK' then 1 else null end) as OK,
COUNT(case when TYPERESULT.[TYPERESULT_NAME]='SKIP' then 1 else null end) as SKIP,
COUNT(DISTINCT PK_COMMAND) AS COMMAND_COUNT,
COUNT(DISTINCT RESULT_ORDER) AS RESULT_COUNT
问题是我需要另一列,其中包含将总 ERROR 结果除以 TOTAL_TESTS 结果的结果,但我不知道该怎么做
最佳答案
在这种情况下,我更喜欢使用 SUM()
,而不是 COUNT()
。我想你会明白为什么,因为平均值也很容易计算:
COUNT(*) AS TOTAL_TESTS,
SUM(case when TYPERESULT.[TYPERESULT_NAME] = 'ERROR' then 1 else 0 end) as ERROR,
SUM(case when TYPERESULT.[TYPERESULT_NAME] = 'OK' then 1 else 0 end) as OK,
AVG(case when TYPERESULT.[TYPERESULT_NAME] = 'ERROR' then 1.0 else 0 end) as ERROR,
. . .
注意1.0
的使用。这是因为SQLite进行整数除法,所以我们需要传入一个非整数值。
关于SQLITE如何在同一查询中划分两个计数结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31807524/