날짜 만 주어진 연령 카테고리 (0 - 10, 11 - 20, 21 - 30 ... 111 - 120)별로 고객을 그룹화하는 SQL 스크립트를 작성하려고합니다. 출생. 나는 이것이 주위에 내 머리를 감쌀 수 없기 때문에 이것이 datediff를 포함 할 것임을 압니다. 데이터베이스에 대한 ER 다이어그램은 아래에 있습니다. personal_details 테이블에서 생일을 찾을 수 있습니다. 모든 도움이 크게 감사드립니다 !!SQL 생년월일로 고객을 그룹화하십시오.
답변
가장 좋은 방법은 연령대와 테이블을하고는
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
대소 문자를 사용하여 예제를 제공 할 수 있습니까? 나는 데이터베이스를 바꿀 수 없다. –
@RHamilton이 업데이트되었지만 DB를 변경할 수있는 경우 첫 번째 옵션이 더 좋습니다 ... – Blag
사례 버전을 시도했지만 테이블 끝에 모든 null 값이있는 age_catagorie 열을 반환하고 있습니다 ... Am I 뭔가 잘못하고 있는거야? –
지금까지 시도한 쿼리에 원하는 결과를 추가하십시오. –