BNA8/.resources/b7572cd39c13e9b3d3b37e6a04c3a14a740ae5414056df8e4585b68befbd0039

51 lines
1.2 KiB
Plaintext

-- Jam / 50% Full / 100% Full Pie Chart WITH time range support
WITH filtered AS (
SELECT
Name,
Full,
Half_Full,
Jam,
t_stamp,
ROW_NUMBER() OVER (PARTITION BY Name ORDER BY t_stamp DESC) AS rn
FROM lane_data
WHERE t_stamp BETWEEN :startTime AND :endTime
),
latest_records AS (
SELECT *
FROM filtered
WHERE rn = 1
),
totals AS (
SELECT
GREATEST(COUNT(*), 22) AS total_lanes,
SUM(CASE WHEN Jam = 1 THEN 1 ELSE 0 END) AS jammed_count,
SUM(CASE WHEN Half_Full = 1 THEN 1 ELSE 0 END) AS half_full_count,
SUM(CASE WHEN Full = 1 THEN 1 ELSE 0 END) AS full_count
FROM latest_records
)
SELECT
'Jammed' AS `Status`,
COALESCE(jammed_count, 0) AS `Count`,
ROUND(COALESCE(jammed_count, 0) * 100.0 / total_lanes, 2) AS `Percentage (%)`
FROM totals
UNION ALL
SELECT
'50% Full' AS `Status`,
COALESCE(half_full_count, 0) AS `Count`,
ROUND(COALESCE(half_full_count, 0) * 100.0 / total_lanes, 2) AS `Percentage (%)`
FROM totals
UNION ALL
SELECT
'100% Full' AS `Status`,
COALESCE(full_count, 0) AS `Count`,
ROUND(COALESCE(full_count, 0) * 100.0 / total_lanes, 2) AS `Percentage (%)`
FROM totals;