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;