macro_sql = {
const conn = await db.connect()
await conn.query(`
CREATE OR REPLACE FUNCTION headtail_discr(tbname, varnum, nb := 10, threshold := 0.4) AS (
WITH RECURSIVE headtail(break, values_count) AS (
-- Initialisation avec break = moyenne, values_count = nb d'observations
FROM query_table(tbname)
SELECT avg(varnum), -- break
count(*) -- values_count
UNION ALL
-- headtail suivant se réfère à la dernière ligne de la table en cours de croissance
FROM query_table(tbname), headtail
SELECT avg(varnum), -- next break
count(*) head_count -- next values_count
WHERE varnum > headtail.break
GROUP BY ALL
HAVING head_count > 1 AND head_count / headtail.values_count <= threshold
)
FROM headtail
SELECT list(break)[1:nb] AS breaks
)`)
await conn.close()
return "Macro headtail_discr créée dans DuckDB"
}