我想用两个不同的计数标准来计数一个特定的数据库列,以便我可以计算一个百分比
例如,让相同的数据库列称为Latency,而该列中的数据包含秒数。
我要计算> 50秒的延迟消息的数量,还要计算同一查询中的延迟消息的总数(即> 0秒)
我当前> 50秒的查询如下
select COUNT(*) from table WHERE date = 20180701 and CAST(Latency As Signed) > 50
我如何在同一查询中包括> 0秒的计数?
答案 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函数。