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

生年月日から特定の年齢層の利用者数を集計

    生年月日を範囲名に変換してから、count を使用してグループ化します:

    select
      case when age < 18 then 'Under 18'
           when age > 50 then  'Over 50'
           else  '18-50' end as range,
      count(*) as count
    from (select DATEDIFF(yy, user_dob, GETDATE()) as age from Customer) c
    group by case when age < 18 then 'Under 18'
       when age > 50 then  'Over 50'
       else  '18-50' end
    

    サブクエリを使用して生年月日を範囲に変換すると、計算は行ごとに 1 回実行するだけで済むため、パフォーマンスが向上します。読みやすくなっています。

    また、UNION を回避することで、クエリをテーブルの 1 回のパスで実行できます。



    1. 誰かがMySQLの外部キーを説明できますか

    2. '読み取り専用'MySQLデータベースで変数を宣言します

    3. PostgreSQLですべての単語の最初の文字を大文字にする方法

    4. データ行として必要な T-SQL ピボット/アンピボット (転置) 列ヘッダー