AQ_SOMMEIL_SemDurTranc_i (I1/I2/I3/S2013V1/S2013V2)
Afin d’avoir une variable similaire entre les 3 versions I1,I2,I3 et S2013 du questionnaire, une variable calculée a été créée avec la variable nettoyée de I3/S2013
et la variable nettoyée de I1/I2 transformée en modalités de réponse à I3/S2013.
Cette variable permet de comparer les heures de sommeil de la même manière pour toutes les vagues d’inclusion.
⇒ Pour les questionnaires I3/S2013, cette variable est égale à la variable AQ_SOMMEIL_SemDurTranc_n;
⇒ Pour les vagues I1 et I2, la variable AQ_SOMMEIL_SemSomDur_n a été regourpée en 12 tranches,
ces tranches correspondent à celles de la variable AQ_SOMMEIL_SemDurTranc.
Les modalités de cette variable sont :
- 1 → Moins de 5 heures;
- 2 → 5 heures;
- 3 → 5 heures 30;
- 4 → 6 heures;
- 5 → 6 heures 30;
- 6 → 7 heures;
- 7 → 7 heures 30;
- 8 → 8 heures;
- 9 → 8 heures 30;
- 10 → 9 heures;
- 11 → 9 heures 30;
- 12 → 10 heures et plus.
Code SQL
-- Variable temporaire pour nettoyer les minutes
ALTER TABLE AQ_MODVIE_SOMMEIL ADD AQ_SOMMEIL_SemSomDur_temp VARCHAR(10) AFTER AQ_SOMMEIL_SemSomDur;
UPDATE AQ_MODVIE_SOMMEIL SET AQ_SOMMEIL_SemSomDur_temp=
REPLACE(
REPLACE(AQ_SOMMEIL_SemSomDur,'--','00'),' ','');
UPDATE AQ_MODVIE_SOMMEIL SET AQ_SOMMEIL_SemSomDur_temp = CASE WHEN SUBSTR(AQ_SOMMEIL_SemSomDur_temp, INSTR(AQ_SOMMEIL_SemSomDur_temp,':')+1) >60 THEN CONCAT(
LEFT(AQ_SOMMEIL_SemSomDur_temp, INSTR(AQ_SOMMEIL_SemSomDur_temp,':')),'00') ELSE AQ_SOMMEIL_SemSomDur_temp END;
-- Transformation en minutes
ALTER TABLE AQ_MODVIE_SOMMEIL ADD AQ_SOMMEIL_SemSomDur_min INT AFTER AQ_SOMMEIL_SemSomDur_temp;
UPDATE AQ_MODVIE_SOMMEIL SET AQ_SOMMEIL_SemSomDur_min=
-- heures
LEFT(AQ_SOMMEIL_SemSomDur_temp, INSTR(AQ_SOMMEIL_SemSomDur_temp,':')-1)*60
-- minutes
+
SUBSTR(AQ_SOMMEIL_SemSomDur_temp, INSTR(AQ_SOMMEIL_SemSomDur_temp,':')+1);
-- Respect des bornes
UPDATE AQ_MODVIE_SOMMEIL SET AQ_SOMMEIL_SemSomDur_min= CASE
-- moins de 3h
WHEN AQ_SOMMEIL_SemSomDur_min<180 THEN NULL
-- plus de 60h
WHEN AQ_SOMMEIL_SemSomDur_min>3600 THEN NULL
-- entre 15 et 60h
WHEN AQ_SOMMEIL_SemSomDur_min>900 THEN ROUND(AQ_SOMMEIL_SemSomDur_min/5,0)
-- entre 12 et 15h
WHEN AQ_SOMMEIL_SemSomDur_min>720 THEN NULL
-- temps correct
ELSE AQ_SOMMEIL_SemSomDur_min END;
-- Variable nettoyée en heures et minutes
ALTER TABLE AQ_MODVIE_SOMMEIL ADD AQ_SOMMEIL_SemSomDur_n TIME AFTER AQ_SOMMEIL_SemSomDur;
UPDATE AQ_MODVIE_SOMMEIL SET AQ_SOMMEIL_SemSomDur_n= TIME_FORMAT(CONCAT(FLOOR(AQ_SOMMEIL_SemSomDur_min/60),':', MOD(AQ_SOMMEIL_SemSomDur_min,60)),'%h:%i');
-- Nettoyage variable I3/S1/S2 (coches)
CALL V_Ordo('SOMMEIL','SemDurTranc',12);
-- Transformation en variable similaire à I3 (Variable indic similaire entre I1/I2/I3)
ALTER TABLE AQ_MODVIE_SOMMEIL ADD AQ_SOMMEIL_SemDurTranc_i SMALLINT AFTER AQ_SOMMEIL_SemDurTranc_n;
-- pour I1/I2
UPDATE AQ_MODVIE_SOMMEIL SET AQ_SOMMEIL_SemDurTranc_i= CASE
WHEN AQ_SOMMEIL_SemSomDur_min<300 THEN 1
WHEN AQ_SOMMEIL_SemSomDur_min<315 THEN 2
WHEN AQ_SOMMEIL_SemSomDur_min<345 THEN 3
WHEN AQ_SOMMEIL_SemSomDur_min<375 THEN 4
WHEN AQ_SOMMEIL_SemSomDur_min<405 THEN 5
WHEN AQ_SOMMEIL_SemSomDur_min<435 THEN 6
WHEN AQ_SOMMEIL_SemSomDur_min<465 THEN 7
WHEN AQ_SOMMEIL_SemSomDur_min<495 THEN 8
WHEN AQ_SOMMEIL_SemSomDur_min<525 THEN 9
WHEN AQ_SOMMEIL_SemSomDur_min<555 THEN 10
WHEN AQ_SOMMEIL_SemSomDur_min<585 THEN 11 ELSE 12
END;
-- pour I3,S1,S2
UPDATE AQ_MODVIE_SOMMEIL SET AQ_SOMMEIL_SemDurTranc_i=AQ_SOMMEIL_SemDurTranc_n
WHERE AQ_SOMMEIL_RefDoc IN ('I3','S1','S2');
UPDATE AQ_MODVIE_SOMMEIL SET AQ_SOMMEIL_SemDurTranc_i= NULL
WHERE AQ_SOMMEIL_RefDoc NOT IN ('I1','I2','I3','S1','S2'); ALTER TABLE AQ_MODVIE_SOMMEIL
DROP AQ_SOMMEIL_SemSomDur_min; ALTER TABLE AQ_MODVIE_SOMMEIL
DROP AQ_SOMMEIL_SemSomDur_temp;