Gemini‐Chat ‐ SQL mit Aggregation pro Stunde - roger-infanger-weibel/cas-hzw-ai-innovation GitHub Wiki
Input
SQL View
Eine View, welche mit folgenden SQL hinterlegt ist, liefert konsolidierte Daten pro Stunde.
WITH StuendlicheDaten AS (
-- Schritt 1: 15-Minuten-Werte pro Parkhaus und Stunde aggregieren
SELECT
day AS datum,
weekday(day) as wochentag,
month(day) as monat,
city,
id,
name,
HOUR(fetch_ts) AS stunde,
-- Berechnung der durchschnittlichen Belegung in Prozent pro Stunde
AVG(((total - free) / total) * 100) AS avg_belegung_prozent
FROM
pls_fetch_current
WHERE
day >= '2026-06-01'
AND total > 0 -- Verhindert Division durch 0, falls Datenfehler vorliegen
GROUP BY
day,
weekday(day),
month(day),
city,
id,
name,
HOUR(fetch_ts)
),
SymbolischeDaten AS (
-- Schritt 2: Prozentwerte in SAX-Symbole übersetzen
SELECT
city,
id,
name,
monat,
wochentag,
datum,
stunde,
CASE
WHEN avg_belegung_prozent BETWEEN 0 AND 20 THEN 'A'
WHEN avg_belegung_prozent BETWEEN 21 AND 50 THEN 'B'
WHEN avg_belegung_prozent BETWEEN 51 AND 80 THEN 'C'
ELSE 'D' -- 81% bis 100% Belegung
END AS symbol
FROM
StuendlicheDaten
)
-- Schritt 3: Die Symbole pro Parkhaus und Tag zu einer Zeichenkette zusammenfügen
SELECT
city,
id,
name,
monat,
wochentag,
datum,
name,
GROUP_CONCAT(symbol ORDER BY stunde SEPARATOR '') AS sax_string,
LENGTH(GROUP_CONCAT(symbol ORDER BY stunde SEPARATOR '')) AS sax_string_len
FROM
SymbolischeDaten
GROUP BY
datum,
city,
id,
name
-- Filtert unvollständige Tage heraus (nur Tage mit exakt 24 Stunden)
HAVING
sax_string_len = 24
ORDER BY
datum,
city,
name;
Output
CSV Sample Record
"city","id","name","monat","wochentag","datum","sax_string","sax_string_len"
"basel","baselparkhausaeschen","Aeschen","6","0","2026-06-01","AAAAAABBBBBBBBBBAAAAAAAA","24"
"basel","baselparkhausanfos","Anfos","6","0","2026-06-01","DDDDDABBCCCCCCCBBAAADDDD","24"
"basel","baselparkhausbadbahnhof","Bad. Bahnhof","6","0","2026-06-01","CCCCCCCCCCCCCCCCCCCCCCCC","24"
"basel","baselparkhausbahnhofsued","Bahnhof Süd","6","0","2026-06-01","AAAAABBDDBCCCBBBBBAAAAAA","24"
"basel","baselparkhauscentralbahn","Centralbahn","6","0","2026-06-01","DDDAABBBBBCBBBBBBAAAADDD","24"
JSON Sample Records
[
{"type":"header","version":"5.2.3","comment":"Export to JSON plugin for phpMyAdmin"},
{"type":"database","name":"ph_fetch"},
{"type":"table","name":"view_parkhaus_sax_strings","database":"ph_fetch","data":
[
{"city":"basel","id":"baselparkhausaeschen","name":"Aeschen","monat":"6","wochentag":"0","datum":"2026-06-01","sax_string":"AAAAAABBBBBBBBBBAAAAAAAA","sax_string_len":"24"},
{"city":"basel","id":"baselparkhausanfos","name":"Anfos","monat":"6","wochentag":"0","datum":"2026-06-01","sax_string":"DDDDDABBCCCCCCCBBAAADDDD","sax_string_len":"24"},
{"city":"basel","id":"baselparkhausbadbahnhof","name":"Bad. Bahnhof","monat":"6","wochentag":"0","datum":"2026-06-01","sax_string":"CCCCCCCCCCCCCCCCCCCCCCCC","sax_string_len":"24"},
{"city":"zurich","id":"zuerichparkhauszueri11shopping","name":"Züri 11 Shopping","monat":"6","wochentag":"1","datum":"2026-06-30","sax_string":"DDDDDDDDDDDDDDDDDDDDDDDD","sax_string_len":"24"},
{"city":"zurich","id":"zuerichparkhauszuerichhorn","name":"Zürichhorn","monat":"6","wochentag":"1","datum":"2026-06-30","sax_string":"CCCCDDDDDDDDDDDDDDDCCCCC","sax_string_len":"24"}
]
}
]
Analyse
Gemini-Chat (grob)
Spannende Erkenntnisse aus der Grafik:
- Der Berufsverkehr-Effekt: In allen Städten schnellen die Kurven ab 05:00 bzw. 06:00 Uhr morgens rasant in die Höhe, da die Pendler in die Städte strömen.
- Mittagsspitze vs. Plateau: Während Zürich über den gesamten Mittag (11:00 bis 13:00 Uhr) das höchste relative Belegungsniveau erreicht, zeigen Bern und Luzern einen sehr synchronen Verlauf mit einem Peak am frühen Nachmittag (ca. 14:00 Uhr).
- Basel als Frühaufsteher: Die Parkhäuser in Basel füllen sich morgens deutlich schneller als jene in Bern und Luzern, leeren sich dafür aber ab 13:00 Uhr auch wesentlich früher und konsequenter.
- Nachtaktivität: Zürich behält auch nachts (22:00 bis 04:00 Uhr) das mit Abstand höchste relative Belegungsniveau im Vergleich zu den anderen Städten.
Details: https://docs.google.com/document/d/1giw6wydGdABdATCAylkz93jF0zI32LIuTYA78TmUvVM/edit?tab=t.0