2017-11-23 8 views
0

年齢のカテゴリ(0〜10,11〜20,21〜30 ... 111〜120)で顧客をグループ化するSQLスクリプトを作成しようとしています。誕生。私はこれが私の頭を包むことができないことによってdatediffを含むことを知っている。私のデータベースのER図は以下の通りです.personal_detailsテーブルで誕生日を見つけることができます。すべての助けが大いに感謝!SQLグループのお客様の生年月日を指定して

enter image description here

+2

これまでに試したクエリで希望する結果を追加してください。 –

答えて

1

ベストな方法は、あなたの年齢区分で表を作成し、

SELECT * 
FROM Personal_details p 
INNER JOIN age_categories ac 
    ON TIMESTAMPDIFF(YEAR, p.birthday, CURDATE()) 
     BETWEEN ac.age_min AND ac.age_max 

他の方法は、真の表のように明確ではないCASEであるが、参加するためにおそらくあなた新しい年齢カテゴリを作成するために更新できます...(0-18; 18-30; ...)

ケースバージョン:

SELECT *, 
    CASE 
     WHEN TIMESTAMPDIFF(YEAR, p.birthday, CURDATE()) 
      BETWEEN 0 AND 10 THEN '0-10' 
     WHEN TIMESTAMPDIFF(YEAR, p.birthday, CURDATE()) 
      BETWEEN 11 AND 20 THEN '11-20' 
     -- ... 
    END AS age_categorie 

FROM Personal_details p 
+0

ケースを使って例を挙げてもらえますか?私はデータベースを変更できません。 –

+0

@RHamiltonが更新されましたが、DBを変更できれば1番目の選択肢はまだまだ改善されています... – Blag

+0

あなたのケースバージョンを試しましたが、テーブルの最後にすべてのヌル値を持つage_catagorie列を返しています...何か間違っている? –

関連する問題