67 lines
1.3 KiB
Plaintext
67 lines
1.3 KiB
Plaintext
-- Main jam results
|
|
SELECT
|
|
Name,
|
|
Jam_count
|
|
FROM (
|
|
SELECT
|
|
Name,
|
|
COUNT(*) AS Jam_count
|
|
FROM (
|
|
-- AREA JAMS
|
|
SELECT
|
|
Name,
|
|
t_stamp
|
|
FROM jam_area
|
|
WHERE t_stamp BETWEEN :starttime AND :endtime
|
|
|
|
UNION ALL
|
|
|
|
-- DEVICE JAMS with edge detection
|
|
SELECT
|
|
Name,
|
|
t_stamp
|
|
FROM (
|
|
SELECT
|
|
Name,
|
|
t_stamp,
|
|
Jam,
|
|
@prev := IF(@lastName = Name, @prevJam, 0) AS prevJam,
|
|
@prevJam := Jam,
|
|
@lastName := Name
|
|
FROM lane_data,
|
|
(SELECT @prevJam := 0, @lastName := '') AS vars
|
|
WHERE t_stamp BETWEEN :starttime AND :endtime
|
|
ORDER BY Name, t_stamp
|
|
) x
|
|
WHERE Jam = 1 AND prevJam = 0
|
|
|
|
) all_jams
|
|
GROUP BY Name
|
|
) jam_results
|
|
|
|
UNION ALL
|
|
|
|
-- Fallback row if nothing exists
|
|
SELECT
|
|
'N/A' AS Name,
|
|
0 AS Jam_count
|
|
WHERE NOT EXISTS (
|
|
SELECT 1
|
|
FROM (
|
|
-- AREA JAMS
|
|
SELECT
|
|
Name
|
|
FROM jam_area
|
|
WHERE t_stamp BETWEEN :starttime AND :endtime
|
|
|
|
UNION ALL
|
|
|
|
-- DEVICE JAMS
|
|
SELECT
|
|
Name
|
|
FROM lane_data
|
|
WHERE t_stamp BETWEEN :starttime AND :endtime
|
|
AND Jam = 1
|
|
) t
|
|
);
|