69 lines
1.6 KiB
Plaintext
69 lines
1.6 KiB
Plaintext
-- Breakdown Pie Chart WITH time range support
|
|
|
|
WITH filtered AS (
|
|
SELECT
|
|
Name,
|
|
Full,
|
|
Half_Full,
|
|
Jam,
|
|
Disabled,
|
|
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 Disabled = 1 THEN 1 ELSE 0 END) AS disabled_count,
|
|
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
|
|
'Enabled' AS `Status`,
|
|
total_lanes - COALESCE(disabled_count, 0) AS `Count`,
|
|
CONCAT(ROUND((total_lanes - COALESCE(disabled_count, 0)) * 100.0 / total_lanes, 1), '%') AS `Percentage (%)`
|
|
FROM totals
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
'Disabled',
|
|
COALESCE(disabled_count, 0),
|
|
CONCAT(ROUND(COALESCE(disabled_count, 0) * 100.0 / total_lanes, 1), '%')
|
|
FROM totals
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
'Jammed',
|
|
COALESCE(jammed_count, 0),
|
|
CONCAT(ROUND(COALESCE(jammed_count, 0) * 100.0 / total_lanes, 1), '%')
|
|
FROM totals
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
'50% Full',
|
|
COALESCE(half_full_count, 0),
|
|
CONCAT(ROUND(COALESCE(half_full_count, 0) * 100.0 / total_lanes, 1), '%')
|
|
FROM totals
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
'100% Full',
|
|
COALESCE(full_count, 0),
|
|
CONCAT(ROUND(COALESCE(full_count, 0) * 100.0 / total_lanes, 1), '%')
|
|
FROM totals;
|