sql >> Databasteknik >  >> RDS >> Oracle

Hur får man antalet personer baserat på åldersgrupper med hjälp av SQL-fråga i Oracle-databasen?

För det första är din åldersberäkning felaktig. Du vill nästan säkert mäta månaderna mellan de två datumen snarare än att hoppas att det är tillräckligt nära att dividera med 365,25

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

För det andra, om du vill gruppera efter intervall behöver du bara välja intervallet i ett case uttalande och gruppera efter det

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. Hur genererar man hela databasskriptet i MySQL Workbench?

  2. c3p0 maxIdleTime är samma som wait_timeout för mysql?

  3. Hämta id:t för senast infogade post i mybatis

  4. Kan vi förenkla denna MySQL-fråga ytterligare?