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;