2017-11-23 12 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를 변경할 수있는 경우 첫 번째 옵션이 더 좋습니다 ... – Blag

+0

사례 버전을 시도했지만 테이블 끝에 모든 null 값이있는 age_catagorie 열을 반환하고 있습니다 ... Am I 뭔가 잘못하고 있는거야? –