SQLITE如何在同一查询中划分两个计数结果

标签 sql sqlite

我当前的代码:

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/

相关文章:

SQL Management Studio 设置(静默安装)

MySQL 错误 1005 错误号。 150 个带主键

php - 使用数据库中的 ID 重命名文件

MySQL 需要帮助设置触发器

PHP 从当前月份选择数据库行并使用 foreach() 显示它们

qt - 如何在 Qt 中以编程方式创建 SQLITE 数据库?

Python:Peewee 更新查询不起作用

mysql - 简单的 SQL 更新查询在小表上速度很慢

c# - SQL 查询找不到以 č、ć、š、ž 等开头的城市

java - 方言 SQLite 3 与 Hibernate 5 的问题