sql >> Databáze >  >> RDS >> Oracle

Jak získat počet lidí na základě věkových skupin pomocí SQL dotazu v databázi Oracle?

Za prvé, váš výpočet věku je nesprávný. Téměř jistě chcete měřit měsíce mezi těmito dvěma daty, spíše než doufat, že dělení 365,25 je dostatečně blízko

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

Za druhé, pokud chcete seskupit podle rozsahů, stačí vybrat rozsah v case prohlášení a skupina podle toho

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. Použití DateDiff() v Oracle

  2. Pochopení nasazení Amazon Auroras Multi-AZ

  3. Použití Oracle JDeveloper s databázovou službou MySQL na platformě Oracle Cloud, část 1

  4. moje transakce není rollback, když se něco pokazí v C# s mysql?