@@ -8,7 +8,7 @@ import type { Filter, SimpleQueryConfig } from "../types";
88 * - site_id: Website identifier
99 * - url: Monitored URL
1010 * - timestamp: Check timestamp
11- * - status: 1 = up, 0 = down
11+ * - status: 1 = up, 0 = down, 2 = pending (retry logic - excluded from uptime)
1212 * - http_code: HTTP response code
1313 * - ttfb_ms: Time to first byte (ms)
1414 * - total_ms: Total response time (ms)
@@ -25,9 +25,10 @@ export const UptimeBuilders: Record<string, SimpleQueryConfig> = {
2525 sql : `
2626 SELECT
2727 COUNT(*) as total_checks,
28- sum(status) as successful_checks,
29- COUNT(*) - sum(status) as failed_checks,
30- round((sum(status) / COUNT(*)) * 100, 2) as uptime_percentage,
28+ countIf(status = 1) as successful_checks,
29+ countIf(status = 0) as failed_checks,
30+ countIf(status = 2) as pending_checks,
31+ if((countIf(status = 1) + countIf(status = 0)) = 0, 0, round((countIf(status = 1) / (countIf(status = 1) + countIf(status = 0))) * 100, 2)) as uptime_percentage,
3132 avg(total_ms) as avg_response_time,
3233 quantile(0.50)(total_ms) as p50_response_time,
3334 quantile(0.75)(total_ms) as p75_response_time,
@@ -73,9 +74,10 @@ export const UptimeBuilders: Record<string, SimpleQueryConfig> = {
7374 SELECT
7475 ${ timeGroup } as date,
7576 COUNT(*) as total_checks,
76- sum(status) as successful_checks,
77- COUNT(*) - sum(status) as failed_checks,
78- round((sum(status) / COUNT(*)) * 100, 2) as uptime_percentage,
77+ countIf(status = 1) as successful_checks,
78+ countIf(status = 0) as failed_checks,
79+ countIf(status = 2) as pending_checks,
80+ if((countIf(status = 1) + countIf(status = 0)) = 0, 0, round((countIf(status = 1) / (countIf(status = 1) + countIf(status = 0))) * 100, 2)) as uptime_percentage,
7981 avg(total_ms) as avg_response_time,
8082 quantile(0.50)(total_ms) as p50_response_time,
8183 quantile(0.95)(total_ms) as p95_response_time,
@@ -230,9 +232,10 @@ export const UptimeBuilders: Record<string, SimpleQueryConfig> = {
230232 SELECT
231233 probe_region as region,
232234 COUNT(*) as total_checks,
233- sum(status) as successful_checks,
234- COUNT(*) - sum(status) as failed_checks,
235- round((sum(status) / COUNT(*)) * 100, 2) as uptime_percentage,
235+ countIf(status = 1) as successful_checks,
236+ countIf(status = 0) as failed_checks,
237+ countIf(status = 2) as pending_checks,
238+ if((countIf(status = 1) + countIf(status = 0)) = 0, 0, round((countIf(status = 1) / (countIf(status = 1) + countIf(status = 0))) * 100, 2)) as uptime_percentage,
236239 avg(total_ms) as avg_response_time,
237240 quantile(0.95)(total_ms) as p95_response_time
238241 FROM ${ UPTIME_TABLE }
0 commit comments