sql >> Database >  >> RDS >> Oracle

Hoe het aantal mensen te tellen op basis van leeftijdsgroepen met behulp van SQL-query's in de Oracle-database?

Ten eerste is uw leeftijdsberekening onjuist. U wilt vrijwel zeker de maanden tussen de twee datums meten in plaats van te hopen dat delen door 365,25 dichtbij genoeg is

trunc( months_between( sysdate, p.birth_date )/ 12 )

Ten tweede, als je wilt groeperen op bereik, hoef je alleen het bereik te selecteren in een case verklaring en groepeer daarbij

SELECT (case when age <= 5
             then 'age <= 5'
             when age > 5 and age <= 10
             then 'age > 5 and age <= 10'
             else 'age > 10'
         end) bucket,
       count(*)
  FROM( SELECT trunc( months_between( sysdate, p.birth_date )/ 12 ) age
          FROM person p )
 GROUP BY (case when age <= 5
                then 'age <= 5'
                when age > 5 and age <= 10
                then 'age > 5 and age <= 10'
                else 'age > 10'
            end)


  1. Hoe kan VBA verbinding maken met de MySQL-database in Excel?

  2. Hoe db-threadpool in Play java te maken en db-query's te maken met deze pool

  3. Postgres SELECT* FROM tabel WAAR column-varchar==string-voorbeeld?

  4. converteer string naar datum php