My SQL query:
SELECT GROUP_CONCAT(state, ': ', Total SEPARATOR ‘–’) as Total FROM( select state,count(*) as Total from states INNER JOIN states_meta ON states.metadata_id = states_meta.metadata_id WHERE states_meta.entity_id = ‘sensor.garden_birds’ AND last_updated_ts >= UNIX_TIMESTAMP(CURDATE()) group by state ORDER by Total DESC ) q;
sensor:
- platform: sql_json
scan_interval: 86400
db_url: mysql://user:pass@core-mariadb/homeassistant?charset=utf8mb4
queries:
- name: "Vogelranglijst"
query: >-
SELECT CONCAT('[', GROUP_CONCAT(vogel_json), ']') AS json
FROM (
WITH states AS (
SELECT state, COUNT(*) AS vogel_count
FROM (
SELECT state FROM states
INNER JOIN states_meta ON states.metadata_id = states_meta.metadata_id
WHERE states_meta.entity_id = 'sensor.garden_birds'
AND last_updated_ts >= UNIX_TIMESTAMP(CURDATE())
) AS states
GROUP BY state
ORDER BY vogel_count DESC
)
SELECT JSON_OBJECT(
'state', state,
'count', vogel_count
) AS vogel_json
FROM states
/*LIMIT 10*/
) AS json_output;
value_template: '{{ value_json[0].count }}'
unit_of_measurement: vogels
column: json