bei

2016-11-05 3 views
1

Ich habe Tabelle, die Geburtstage und Geschlechterbei

SELECT `tblresultdatetime`, `tblresultbirthdate`, `tblgendertexten` 

FROM `ci_wizard_results` 

INNER JOIN ci_wizard_genders ON ci_wizard_results.tblresultgender = ci_wizard_genders.tblgenderid 

Returns gilt:
enter image description here

Jetzt möchte ich eine Tabelle wie folgt erstellen: enter image description here


Also möchte ich eine Tabelle erstellen, die auf die Altersgruppen etc. hinweist.
Ich glaube, ich muss zuerst die Daten zu Alter konvertieren:

select *,year(`tblresultdatetime`)-year(`tblresultbirthdate`) - (right(`tblresultdatetime`,5) < right(`tblresultbirthdate`,5)) as age from `ci_wizard_results` 


Aber danach, ich bin nicht sicher, wie es weitergeht. Ich glaube, ich sollte Fall verwenden:

select *,year(`tblresultdatetime`)-year(`tblresultbirthdate`) - (right(`tblresultdatetime`,5) < right(`tblresultbirthdate`,5)) as age, 
count(case when age <= 30 and age> 39 then 1 end) as agegroup3039 


from `ci_wizard_results` 


Aber man kann nicht einen Aliasnamen verwenden, falls, also bin ich irgendwie stecken. Irgendwelche Vorschläge, wie ich weitermachen könnte?

(Mein letztes Ziel ist es, die Daten in einem Bericht über reportico anzuzeigen)

Dank!

Antwort

2

Unter der Annahme, dass das Alter ist einfach berechnen mit

year(`tblresultdatetime`)-year(`tblresultbirthdate`) 

Sie Fall, wenn und Gruppe von zB können

select 
     case when year(`tblresultdatetime`)-year(`tblresultbirthdate`) between 0 and 30 then '0 - 30' 
      when year(`tblresultdatetime`)-year(`tblresultbirthdate`) between 31 and 40 then '31 - 40' 
      when year(`tblresultdatetime`)-year(`tblresultbirthdate`) between 41 and 50 then '41 - 50'    
      when year(`tblresultdatetime`)-year(`tblresultbirthdate`) between 51 and 60 then '51 - 60' 
      when year(`tblresultdatetime`)-year(`tblresultbirthdate`) between 61 and 70 then '61 - 70' 
      else '70+' as Group end, 
     sum(case when `tblgendertexten` = 'man' then 1 else 0 end) as man,  
     sum(case when `tblgendertexten` = 'woman' then 1 else 0 end) as woman,  
     sum(1) as total 
FROM `ci_wizard_results` 
INNER JOIN ci_wizard_genders ON ci_wizard_results.tblresultgender = ci_wizard_genders.tblgenderid 
group by case when year(`tblresultdatetime`)-year(`tblresultbirthdate`) between 0 and 30 then '0 - 30' 
      when year(`tblresultdatetime`)-year(`tblresultbirthdate`) between 31 and 40 then '31 - 40' 
      when year(`tblresultdatetime`)-year(`tblresultbirthdate`) between 41 and 50 then '41 - 50'    
      when year(`tblresultdatetime`)-year(`tblresultbirthdate`) between 51 and 60 then '51 - 60' 
      when year(`tblresultdatetime`)-year(`tblresultbirthdate`) between 61 and 70 then '61 - 70' 
      else '70+' as Group end 
union 
select 
     'total ', 
     sum(case when `tblgendertexten` = 'man' then 1 else 0 end) as man,  
     sum(case when `tblgendertexten` = 'woman' then 1 else 0 end) as woman,  
     sum(1) as total 
FROM `ci_wizard_results` 
INNER JOIN ci_wizard_genders ON ci_wizard_results.tblresultgender = ci_wizard_genders.tblgenderid 
+0

Sie so vielen Dank! das funktioniert! – mitch2k

Verwandte Themen