Habe es mit row_num gelöst.
Die Felder im Sub-Select werden zwar nicht alle benötigt, dienen aber noch zu Testzwecken.
Die Darstellung in Grafana erfolgt über ein Bar gauge.
SELECT
d.name
,d.value
FROM
(
SELECT
ROW_NUMBER() OVER (
PARTITION BY n.id ORDER BY n.ts DESC) AS row_num
,n.id
,floor(n.ts/1000) AS time_sec
,n.val as value
,CASE n.id
WHEN 8 THEN 'Stromzähler'
WHEN 9 THEN 'TV'
WHEN 10 THEN 'Kühlschrank'
WHEN 11 THEN 'Waschmasch.'
WHEN 12 THEN 'Trockner'
WHEN 13 THEN 'Spülmschine'
END AS name
FROM iobroker.ts_number n ,datapoints d
WHERE n.id IN (8,9,10,11,12,13) AND n.id = d.id
ORDER BY n.id, n.ts DESC
) d
WHERE d.row_num=1
ORDER BY d.value DESC, d.id
[image: 1704629463450-bildschirmfoto-2024-01-07-um-13.10.46.png]