sql >> データベース >  >> RDS >> Oracle

OracleデータベースのSQLクエリを使用して年齢層に基づいて人数を取得するにはどうすればよいですか?

    まず、年齢の計算が正しくありません。 365.25で割るのが十分に近いことを期待するのではなく、ほぼ確実に2つの日付の間の月を測定する必要があります

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

    次に、範囲でグループ化する場合は、caseで範囲を選択するだけです。 ステートメントとそれによるグループ化

    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. phpを使用したmysqlクエリを使用したプログレスバー

    2. 友達と相互の友達の数を見つけるためのMySQLクエリ

    3. 複数の行を1つの列にカンマで区切ることはできますか?

    4. 複数の行の値に一致する外部キーを検索する