Hi,
I want to show the usage of horses per day with an heatmap chart.
I created an SQL query getting me the right data :
WITH date_series AS (
-- Génère les 7 derniers jours à partir d'aujourd'hui sans utiliser generate_series
SELECT ({{ selectedDate.value }}::date - 6) AS jour
UNION SELECT ({{ selectedDate.value }}::date - 5)
UNION SELECT ({{ selectedDate.value }}::date - 4)
UNION SELECT ({{ selectedDate.value }}::date - 3)
UNION SELECT ({{ selectedDate.value }}::date - 2)
UNION SELECT ({{ selectedDate.value }}::date - 1)
UNION SELECT {{ selectedDate.value }}::date
),
chevaux_actifs AS (
-- Sélectionne tous les chevaux (optionnellement filtrer sur Actif = 'Oui' si nécessaire)
SELECT "Chevaux"."id", "Chevaux"."Nom" as Nom
FROM "Chevaux"
WHERE "Actif" = 'oui'
AND "id" != 45
AND "id" != 50
),
cours_par_cheval_jour AS (
-- Compte les cours par cheval et par jour
SELECT
"Chevaux"."id" AS id_cheval,
"Chevaux"."Nom" AS nom_cheval,
"Cours"."Date" AS jour,
COUNT(DISTINCT "Cours"."id") AS nombre_cours
FROM "Chevaux"
INNER JOIN "Montoirs" ON "Chevaux"."id" = "Montoirs"."Monture"
INNER JOIN "Cours" ON "Montoirs"."id_cours" = "Cours"."id"
WHERE "Cours"."Date" >= ({{ selectedDate.value }}::date - 6)
AND "Cours"."Date" <= {{ selectedDate.value }}::date
GROUP BY "Chevaux"."id", "Chevaux"."Nom", "Cours"."Date"
)
-- Produit cartésien entre tous les chevaux et tous les jours
-- Avec LEFT JOIN pour inclure les jours sans cours
SELECT
chevaux_actifs.id AS id_cheval,
chevaux_actifs.Nom AS nom_cheval,
date_series.jour,
COALESCE(cours_par_cheval_jour.nombre_cours, 0) AS nombre_cours
FROM
chevaux_actifs
CROSS JOIN
date_series
LEFT JOIN
cours_par_cheval_jour ON chevaux_actifs.id = cours_par_cheval_jour.id_cheval AND date_series.jour = cours_par_cheval_jour.jour
ORDER BY
chevaux_actifs.Nom DESC, date_series.jour;
I got this and validate result is good :
But in the heatmap data does not show as expected :
Here is how I setup parameters :
I don't understand what's wrong. Wildstar should be at 0 for all dates.