MYSQL查询中的多个计数

时间:2018-09-20 02:54:12

标签: mysql

我想用两个不同的计数标准来计数一个特定的数据库列,以便我可以计算一个百分比

例如,让相同的数据库列称为Latency,而该列中的数据包含秒数。

我要计算> 50秒的延迟消息的数量,还要计算同一查询中的延迟消息的总数(即> 0秒)

我当前> 50秒的查询如下

select COUNT(*) from table WHERE date = 20180701 and CAST(Latency As Signed) > 50

我如何在同一查询中包括> 0秒的计数?

2 个答案:

答案 0 :(得分:1)

使用条件聚合:

SELECT
    COUNT(CASE WHEN CAST(Latency As Signed) > 50 THEN 1 END) AS latency,
    COUNT(CASE WHEN CAST(Latency As Signed) > 0  THEN 1 END) AS total,
    100.0 * COUNT(CASE WHEN CAST(Latency As Signed) > 50 THEN 1 END) /
            COUNT(CASE WHEN CAST(Latency As Signed) > 0  THEN 1 END) AS percentage
FROM table
WHERE date = 20180701;

答案 1 :(得分:0)

@John,How to get multiple counts with one SQL query?,这可能对您有所帮助。它结合使用count和聚合函数,以便在一个查询中定位多个count函数。