sql >> Database teknologi >  >> RDS >> Oracle

Hvordan får man optælling af personer baseret på aldersgrupper ved hjælp af SQL-forespørgsel i Oracle-databasen?

For det første er din aldersberegning forkert. Du vil næsten helt sikkert måle månederne mellem de to datoer i stedet for at håbe, at det er tæt nok på at dividere med 365,25

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

For det andet, hvis du vil gruppere efter intervaller, skal du blot vælge intervallet i en case udsagn og grupper 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. Sådan angives en liste over værdier for en postgresql-sekvens

  2. LPAD med indledende nul

  3. Brug af et SQLAlchemy Integer-felt til at oprette et tidsdelta-objekt til filtrering

  4. Hvordan definerer man en trigger ON COMMIT i Oracle?