Toon posts:

[sql] probleem subquery

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil van de gegevens uit een database de gemiddelde leeftijd berekenen per woonplaats. Als subquery gebruik ik deze code:

code:
1
2
3
select avg(year(getdate())-year(b.gebdatum)) as gemdatum
from blaat a left join blaat b on a.key = b.key
where a.woonplaats = b.woonplaats


Ik weet dat ik ergens een denkfout maak, ook gezien het feit dat het resultaat niet goed is. Wie kan mij wat op weg helpen.

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Voor een gemiddelde leeftijd PER woonplaats zul je moeten groeperen op woonplaats.
Dus iets als: select woonplaats, avg(... from ... where ... group by woonplaats

Who is John Galt?


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
SQL:
1
2
3
4
SELECT woonplaats, AVG(jouw formule) as gemdatum
FROM blaat a 
LEFT OUTER JOIN blaat b ON a.key = b.key
GROUP BY woonplaats


GROUP BY dus, in de FAQ staat daar meer info over: P&W FAQ - SQL

Je formule is trouwen niet heel nauwkeurig, hij houdt immers geen rekening met de dag en maand van de geboorte.

edit: google geeft me de goede code om een leeftijd in T-SQL te bereken:
SQL:
1
2
3
4
5
6
7
DECLARE @birthdate SMALLDATETIME, @endDate SMALLDATETIME 
SET @birthdate = '1900-01-01' 
SET @endDate = GETDATE() 
 
SELECT DATEDIFF (YEAR, @birthdate, @currentdate ) - 
    CASE  WHEN 100 * MONTH(@endDate) + DAY(@endDate) < 100 * MONTH(@birthdate) + DAY(@birthdate) 
            THEN 1 ELSE 0 END 

[ Voor 36% gewijzigd door P_de_B op 15-07-2005 10:21 ]

Oops! Google Chrome could not find www.rijks%20museum.nl